下面的的表达有没有不同,如果不同,请说明不同在哪里。 char* s1="hello"; char s2[]="world";

char *s1="hello";与char s2[]="hello";
2024-11-24 22:28:24
推荐回答(2个)
回答1:

char *s1="hello";//字符串在系统中以字符数组的形式存储,系统把字符串首地址赋给字符指针s1
char s2[]="hello";//对字符数组初始化赋值,将字符串中的字符逐个放进字符数组中,以'\0'结束,数组的长度为字符个数+1

回答2:

楼上说的对,我在补充点就是char* s1="hello"; 的s1是可以改变它的指向,因为在char* s1="hello"; 这个表达式中s1是指向‘h’的地址,可以通过:
for(int i=0;i<5;i++)
char s2[]=*s1++;
这个过程来给char s2[]赋值,
而char s2[]="hello"这个表达式中就不能改变s2的指向 例如:s2++这是错的。