84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
所有指针都是放在栈中吗,比如函数内局部指针变量、指向动态申请的对象的局部指针变量?
走同样的路,发现不同的人生
你说的函数内局部指针变量、指向动态申请的对象的局部指针变量
函数内局部指针变量、指向动态申请的对象的局部指针变量
int test = 0; //全局静态存储区 int* ptrTest = &test; // 这个指针自己也是在全局静态存储区上,指向的内存地址也是。 int main() { int a = 2;//栈上 int* ptr = &a;//ptr是在栈上,然后它指向的内存地址也是栈上的 int* ptrHeap = new int(2); // new是在堆上申请的内存,返回的是这个申请的内存的地址 // 然后ptrHeap是指向这个地址的,但是ptrHeap它自己是占的栈上的地址。 delete ptrHeap; return 0; }
指针自身是要占内存空间的,然后它又指向其它内存空间。
是吧,指向堆地址
函数指针变量本身并不都是栈变量。
举例说明:
int ** p = new int*;
对于这个例子,p是指针的指针,p也是指针,p指向的是一块存储了一个int值的内存块。但是,存储*p本身指针变量的内存是堆。
由此可见,指针变量和普通变量一样,可以是栈变量,也可以是堆变量。
肯定不是啊,指针也是变量,和其他变量没什么不一样,你想一下vector<int*>
你说的
函数内局部指针变量、指向动态申请的对象的局部指针变量
指针自身是要占内存空间的,然后它又指向其它内存空间。
是吧,指向堆地址
函数指针变量本身并不都是栈变量。
举例说明:
对于这个例子,p是指针的指针,p也是指针,p指向的是一块存储了一个int值的内存块。但是,存储*p本身指针变量的内存是堆。
由此可见,指针变量和普通变量一样,可以是栈变量,也可以是堆变量。
肯定不是啊,指针也是变量,和其他变量没什么不一样,你想一下vector<int*>