#include "stdio.h"
int main(void)
{
char *str = "hello world\r\n"; //指针类型初始化字符串,只读,
//"hello world\r\n"存储在常量区
char buf[] = "hello world\r\n"; //数组类型初始化字符串,读写
//"hello world\r\n"存储在全局区或栈区
printf("buf=%s\r",buf);//输出原字符串
buf[0] = 't'; //正确,数组内容可以修改
printf("buf=%s\r\n",buf);//输出修改后的字符串
printf("str=%s\r",str);//输出原字符串
str = "Test"; //正确,指针指向新的字符串
printf("str=%s",str);//输出修改后的字符串
*(str+0) = 't'; //错误,指针指向内容不可修改
printf("(str+0)=%s",str);//因为上一句错误,此处无法执行
return 0;
}
输出如图:

本文通过一个C语言示例程序,详细解析了字符数组与字符指针在字符串操作中的区别,包括初始化、读写权限及修改操作。演示了如何正确地修改字符数组中的内容,并解释了为何不能直接修改字符指针指向的常量字符串。
3797

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



