指针值是一个地址值,是内存中的一个固定值。你应该问的指针变量存在那里?指针变量,可以看成是一个int型的变量,如果是局部的就存储在栈中。
例如:
int a = 1;
int* p = &a;
p的值是一个地址值,a的地址:0x9.。。。。。
指针变量p如果是局部的就存储在栈中。如果p在一个函数中,函数结束后,指针p就没有了。
另外指针指向的数据内容不一定存储在堆中,我上边的例子中p指向的内容是1,它是存储在栈中的。只有用new或者malloc分配的内存空间,才存储在堆中。
例如:
int n = 10;
int* p = (int*)malloc(n*sizof(int));
这里的p指向的数据才存储在堆中。
指针和变量是没有区别的
看指针定义在哪里
全局的就会放到静态区
函数内的就会放到堆栈上
他和变量一样,其实可以用同样的一个整形变量来存放指针,只不过变量保存的东西当做地址而已
指针只不过是个存储地址的特殊变量。。它的存储空间应该无异常,只要是局部的,一般都是放在栈中的。。堆的话是不太可能的,放在静态区的话也不太可能,所以,只能放在栈中。。
我觉得应该在栈中,如果是在堆中的话,意味着需要程序员自己分配内存,但是指针所占的空间是固定的都是4个字节,也就是已经被系统分配好了,你不能自己分配。
内存中