关于一级指针和二级针作为函数参数的理解

本文详细介绍了在C/C++中,一级指针和二级指针作为函数参数的区别和作用。通过实例说明了一级指针只能修改指向内容,而二级指针可以改变指针的指向。在函数中,通过二级指针可以实现对主函数中指针变量指向的修改,例如在动态内存分配中。
摘要由CSDN通过智能技术生成
void setnew(int *ptr)
{
	int b = 30;
	printf("setnew----&b:0x%x\n", &b);
	printf("setnew------&ptr:0x%x , ptr:0x%x , *ptr:%d   \n", &ptr,ptr,*ptr);
	*ptr = b;
	printf("setnew------&ptr:0x%x , ptr:0x%x , *ptr:%d   \n", &ptr,ptr,*ptr);
}


void main()
{
	int a =10;
	int *p = &a;
	printf("main----&a:0x%x\n", &a);
	printf("main------&p:0x%x , p:0x%x , *p:%d \n", &p,p,*p);
	setnew(p);	
	printf("main------&p:0x%x , p:0x%x , *p:%d \n", &p,p,*p);
}

1、main函数新建变量a=10,a的地址是0x12ff44;

2、main函数新建指针p,p指针自己的地址是0x12ff40,a的地址赋给变量p,所以p=0x12ff44;

3、调用setnew函数中创建ptr指针,ptr指针自己的地址是0x12fef0,由于实参就是main函数的指针p,所以ptr的指向和指针p一样,也就是ptr=0x12ff44,都是指向变量a的地址;

4、当在setnew函数中执行*ptr = b;之后,也就是把指针ptr指向位置的内容修改为b的值,由于b=30ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值