征服C语言之指针初始化

最近刚刚学到指针这部分内容,就尝试着自己写一些代码,不过,总是会出现这样或者那样的 error 或者 warning , 其中,比较普遍的是:当你写下类似下面的代码时,我使用的编译器 Codeblocks 就会报错:


int *p;
*p = 7;


具体的报错的内容如下:


就是说:你定义的指针没有进行初始化!

开始,我还以为这没什么大不了的,但是,当错误的出现多了之后,我去网上找了一些资料,发现这种指针没有初始化就进行赋值的行为是十分危险的!具体解释如下:

*p = 7 这个语句就是将 7 赋给 p 指向的内存区,但是,问题是 p 指向的内存区是未知的,有可能是任何地方,甚至是系统内核。随意对这些区域进行赋值操作是十分危险的!


所以,正确的做法是:一定义就初始化!

int i;
int *p = &i;
*p = 7;

这样,就不会报错了!

同时,需要说明的是,在定义中 int *p 中的 *p 不是指对指针的间接读取,而是说明该变量是一个指针变量而已!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值