请教一个指针问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:02:55
程序如下:
#include "stdio.h"

void main()
{
char *p = "a";
printf("%c \n", *p);
*p = 'f';
printf("%c \n", *p);
}
编译的时候没有问题,运行的时候只能输出a,然后提示出现cpp17.exe问题。
ps:我用的是vc++的编译器。

char *p = "a";
已经把P定义为一个字符串常量了
*p = 'f'//error
左边是一个p进行了取值,但是,p指向的是常量去,不能对这块内存进行写

char *p = "a";

这样一来,p就指向了一个常量,所以在后面不能再改变p所指向的内存区域的值

字符串指针P指向了常量字符串a
如果你后边来改变*p的值,那就会导致内存出错了
早起的编译器好像可以,现在的貌似不行了

*p = 'f';

这里写错了,
改成
p=‘f';

p已经是地址类型了,你再加个*就是双重地址指针了。