84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
所有指针都是放在栈中吗,比如函数内局部指针变量、指向动态申请的对象的局部指针变量?
走同样的路,发现不同的人生
你说的函数内局部指针变量、指向动态申请的对象的局部指针变量
函数内局部指针变量、指向动态申请的对象的局部指针变量
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*>