我想知道C和C ++中的指针 - 它如何帮助节省内存?我搜索但没有得到满意的答案。请帮帮我。
答案 0 :(得分:4)
如果您比较以下两段代码:
foo() {
large_struct x;
bar(x);
}
bar(large_struct x) {
//do some funny things
}
和
foo() {
large_struct* x;
bar(x);
}
bar(large_struct* x) {
//do some funny things
}
在第一部分中,大结构x被复制到内存中,而在第二部分中,只有一个指针被复制到内存中。当你可以用指针保存内存时,这就是要点。
答案 1 :(得分:2)
不确定你到底发生了什么,但是...存储指针所需的内存少于存储它指向的对象的整个副本。
答案 2 :(得分:1)
除了其他人所说的,动态内存分配的指针必要(这也适用于更高级别的语言,但是(通常)抽象掉了)。这意味着没有指针,你只能局限于(通常相当小的)堆栈内存,这更需要保护。
答案 3 :(得分:0)
指针主要用于指向内存中的位置。指针的类型指的是它指向的内存类型(通常),例如:char *(字符指针指向带有字符的内存),指针的这种“类型”与指针有很大关系。指针运算,例如:如果向指针的名称添加整数,地址将跳转多少字节。
在C ++中,您可以使用new运算符在运行时从系统中声明内存。此类型的内存称为动态内存,应明确删除。指针表示法用于指向使用“new”运算符分配的此类内存。例如:
char * a = new char;
或
char * a = new char[10]
必须删除此类内存或使用delete关键字将其返回给系统 例如:
delete a;
或
delete [] a;
我们的鹿C ++程序员认为它们往往会忘记删除这种声称的内存,因此托管语言应运而生。最流行的是Java,C#和托管C ++(C ++ CLI)。
(看来,我可以写一篇关于指针是什么的全文,但我试着指出你的问题)。
我希望你对我的回答感到满意。 我希望这有帮助