指针类型的引用,一般用在什么地方?
- C/C++ code
int find(string index, T* & var);
像这种 函数参数设置 为什么要用 * & 指针引用呢
通常 用* 或者 &也能够完成对外部 变量的操作和改变。
求问这种 指针类型的引用,适合在什么场合下使用?有什么用处
[解决办法]
相当于二级指针,把存储地址的那个变量地址给传过去,直接修改。
[解决办法]
用在要修改指针本身的情况
可以用
int find(string index, T** var)
替代
T* a;
*var = a;
若是T*& var
T* a;
var = a;
等效
[解决办法]
参考:
- C/C++ code
#include <iostream>using namespace std;// 将小写字符串,转换成大写字符串void fun(char*& str){ for(int i = 0; i < 43; ++i) { if(str[i] != 32) str[i] -= 32; }}int main(int argc, char** argv){ char str[] = "there is a kind of hush all over the world"; char* str1 = str; fun(str1); cout << str1 << endl; return 0;}
[解决办法]
改变指针的指向
[解决办法]
用处很多,比如给某个指针申请空间
void new(int *&p)
{
p=(int *)malloc(5*sizeof(int))
}
因为是改变传过去的指针属性,而不是所以指针变量*p看成是变量,需要地址传递,所以用引用,不用引用时该函数在被其他函数调用时会出错,因为不用引用时是给临时变量申请内存空间,函数结束时候临时变量生存期结束。
[解决办法]
相当于修改指针的地址,二级指针!
[解决办法]
- C/C++ code
void fun(int* pi) { pi = new int(0); }int main(){ int i = -1; cout<<i<<endl; fun(&i); cout<<i<<endl; return 0;}
[解决办法]