问题遇到的现象和发生背景
运行结果及报错内容
#include <stdio.h>
int main()
{
char* p = "hello";
char c[10] = "hello";
printf("%s\n", p[0]);
printf("%s\n", c[0]);
}
出现标题错误求大家帮忙
问题遇到的现象和发生背景
#include <stdio.h>
int main()
{
char* p = "hello";
char c[10] = "hello";
printf("%s\n", p[0]);
printf("%s\n", c[0]);
}
出现标题错误求大家帮忙
printf("%s\n", p[0]);
说明一下:
%s格式会认为你后面的变量是字符串地址,但p[10]是p字符串的第一个字符。程序会认为这个字符的ASCII码是一个地址,从而到这个地址取读字符串进行输出,导致错误提示为0x0000000000000068这个地址不能访问,有冲突。因为这个地址是系统保护地址,不能访问的。0x68正好是字符h的ASCII码
修改方法:
如果想输出字符串,那么将p[0]改为p,如果想输出p[0]这个字符,那么用%c