最近在复习指针的时候出现了一些问题,是关于指针修改的问题
来看以下三个代码
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.对指针而言,作为地址是不受其所指向的内容所影响的,而想要改变内容需要视内容的数据类型而定。
文章讲述了指针在不同情况下的行为,包括指向常量时不能修改、指向变量可以修改内容,以及字符串常量首地址的理解。强调了指针本质上是地址的概念和内容修改的条件依赖于数据类型。
1347

被折叠的 条评论
为什么被折叠?



