【发布时间】:2015-10-18 12:51:09
【问题描述】:
我在Pointers上浏览了这一章,偶然发现了这句话:
您将使用指针来处理已分配的变量 在堆上。 (您可以使用指针来处理堆栈变量,但是 在大多数情况下,这是没有必要的)。
我知道如何使用指针来处理已在堆上分配的变量。但我无法想象它如何用于处理堆栈变量。由于堆栈变量在函数退出时会自动释放(即变量被推出堆栈),如何在不使用 free 系统调用之类的东西的情况下使用指针(如上面引用的文本所暗示的那样)完成相同的操作?这可能吗?
【问题讨论】:
-
您想对堆栈变量做什么“相同”?
-
"使用指针" != "调用
free" -
不清楚您遇到了什么问题。但是你可以让一个指针指向一个堆栈变量。指针与它们指向的对象的存储类型正交。
-
我认为作者通常是在谈论使用带有局部变量的指针,而不仅仅是从函数返回指针。
-
在栈上分配的变量是在内存中分配的(虽然是静态的而不是动态的),因为栈本身位于内存中。所以这个变量有一个可以通过指针访问的内存地址。例如:声明
int a, *p = &a,并赋值*p = 5。