【发布时间】:2014-03-05 16:03:45
【问题描述】:
我是 C 新手,在阅读时遇到了指针的概念。所以,经过多本书籍和网站的引用,我仍然无法弄清楚如何使用指针来节省内存。
一个指针指向另一个变量的地址位置, 例如: int *ptr =&var;
从上面的例子来看,ptr 保存了 var 的地址,它本身存储在另一个内存位置。 所以我的问题是:
1) 当指针值存储在单独的内存位置时,为什么要使用指针,从而增加内存使用率?
2) 为什么我们不直接使用变量名(在这种情况下为var)而不是为指针使用另一个内存空间
【问题讨论】:
-
想象一下,你有一个庞大的结构数组,消耗 12345 MiB 的 RAM。你想复制整个东西,还是只是有一个指向它的指针?对于任何比指针大的数据,指针比副本消耗的内存少……
-
但是假设如果我们要操作那个结构体中的数据,我们可以直接使用结构体名称而不是使用像struct_array[x].varname=5这样的指针...而不是使用struct_ptr-> varname=5
-
@Vijayakumar 如果您愿意,可以将所有内容声明为全局变量,然后您无需通过传递指针来浪费几个字节。这种方法唯一的一个小问题是,由于没有封装的可能性,它导致代码非常难以维护。