C/C++指针定义简洁写法容易导致的误解

C/C++中定义指针(先声明再初始化)

int *px;
px=&x;

其简洁写法为

int *px=&x;

这种简洁写法最容易造成的误解的是int* a,b,c;中a,b,c都当做是声明的指针,但事实上声明a为int型指针,b和c只是普通int型变量。

另外,这种简洁写法在指针传递或者引用传递时候也会造成直观感觉上的混乱,举一个简单的例子分析如下:

#include <stdio.h>
void add_1(int *p_come){*p_come=*p_come+1;}
//传过来地址px或&x直观上感觉就是划等号,这种感觉是源自定义简洁些法int *p_come=&x;
//函数之间的参数传递并不是划等号,把地址px或&x传递到*p_come,就如同p_come=&x;
//*p_come表示的是指针对应的值,但传递*p_come却传递的是*p_come本身也就是p_come里面存放的地址
//不能理解为void add_1(int *p_come){p_come=p_come+1;}这样返回main以后x并未+1

void add_10(int &address_come){address_come=address_come+10;}
//函数体里面address_come就是*&address_come
//函数之间的参数传递并不是划等号,把x传递到&address_come,就如同*&address_come=x;

int main(int argc, char* argv[])
{

	int x=1;
	{
	int *px;
	px=&x;

	add_1(px);
	//等同于add_1(&x);
	//px=&x;不要被int *px=&x;的定义简洁写法干扰
	printf("%d\n",x);
	}
	//出了此块x仍为修改后的值2
	{
		add_10(x);
		//此处直接传给x而非&x
		printf("%d\n",x);
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值