有关指针能否修改问题的思考

文章讲述了指针在不同情况下的行为,包括指向常量时不能修改、指向变量可以修改内容,以及字符串常量首地址的理解。强调了指针本质上是地址的概念和内容修改的条件依赖于数据类型。

最近在复习指针的时候出现了一些问题,是关于指针修改的问题

来看以下三个代码

int*p=NUll;
*p=100;

该代码如果输出*p的话,会在第二条语句引发中断

int num=0;
int*p=#
*p=100;

 该代码最后输出num的话就会是100,成功实现修改内容的目标

char*str="hello";
str="world”;

这个代码可能会有很多人认为是错误的,但其实是正确的,str被修改掉了

从以上例子,总结一下规律:

1.指针如果指向常量,那么不能修改其内容,因为常量在静态区,而指针作为变量在栈区

2.指针如果指向变量,由于变量的内存是可以修改的,那么指针指向的内容是可以修改的

3.指针的本质是地址,对于字符串而言,即使是常量字符串,指针储存的是其首地址,当再次赋值的时候,字符串常量在赋值的时候可以理解为其首地址,因此再次改变的时候不会出现问题

4.对指针而言,作为地址是不受其所指向的内容所影响的,而想要改变内容需要视内容的数据类型而定。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值