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