1、从0级指针到1级指针
这个想对容易些 ,话不多说直接上代码如下:
int GetValue(int* p)
{
*p = 8;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a = 7;
cout<<"修改前 a = "<<a<<endl;
GetValue(&a);
cout<<"修改后 a = "<<a<<endl;
system("pause");
return 0;
}
结果如下:
2、从1级指针到2级指针
有一些接口不想暴露实现过程,直接让传入指针,然后输出即可。代码如下:
int GetValue(char** pCh,int* pLen)
{
char* tmp = new char[100];
strcpy(tmp,"hello world");
*pCh = tmp;
*pLen = 100;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
char* ch = nullptr;
int len = 0;
GetValue(&ch,&len);
cout<<"ch = "<<ch<<endl;
cout<<"len = "<<len<<endl;
if(ch != nullptr)
{
delete ch;
ch = nullptr;
}
system("pause");
return 0;
}
输出结果:
分析过程如下图:
结论:
间接赋值的三要素
1、定义实参变量 如a;
2、与形参建立关系如:p=&a;
3、修改形参的值,就相当于修改了实参。