c\c++ 浅谈指针意义之间接赋值

本文探讨了C/C++中指针的间接赋值概念,从0级指针到1级、2级指针的转换。通过代码示例和分析,展示了如何通过指针进行间接赋值,以及实现过程中如何保护接口不暴露实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、修改形参的值,就相当于修改了实参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值