到底什么时候用指针

在c/c++编程中,到底什么时候该用指针来传递参数呢?总结如下:
1. 需要改变实参的时候, 只能用指针.
2. 传递大型结构并且"只读"其元素的时候,
因为大型结构通过值传递, 需要拷贝其每个元素, 这样效率太低.
3. 需要遍历数组或频繁引用其元素时, 这样效率比使用下标高.
4. 动态分配空间时, 必须使用指针.
5. 传递数组时, 必须使用指针.
6. 函数返回指针时, 比如fopen
另外,有时候需要使用二级指针,即指针的指针,例如:
MemAllocate(char *a){
a=(char *)malloc(sizeof(char));
}
当调用此函数进行内存分配时,发现不能分配内存不能成功,因为此时对于a来说,形参改变了,但实参并不会改变,他们对应于不同的内存单元。正确的写法应该是:
MemAllocate(char **a){
*a=(char *)malloc(sizeof(char));
}
这样就能够正确地分配内存了。

你可能感兴趣的:(c/c++)