在c语言中,指针变量的个数是不是一个定值?(因为无论是32为还是64为的计算机,内存内部的单元是固定的
指针的实质就是内存地址,但是,操作系统内允许的指针数目的上限却不是内存单元的最大值,因为在具体实现的过程中,操作系统为不同来源的指针分配地址方式不同。
C/C++程序所对应的存储区,分位三类
1.静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间 都存在。它主要存放静态数据、全局数据和常量。
2.栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束 时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
3.堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。
举个例子吧,
char a[] = "Hello World";
char *p = "Hello World";
这里char a[] = "Hello World",其空间是分配在栈中的,所以你可以对其中的内容进行修改。而char *p = “Hello World”,其空间是分配在静态存储区的。且Hello world为字符串常量,是不允许修改的。
在此例中计算机最多同时可以定义的像p那种类型指针的上限就是栈区的地址单元数目。
如图:
其实我的问题也可以这么说:一个计算机最多同时可以定义多少个指针?
这个我就不知道了,不过我看楼上答的好像是对的。