首先我认为c语言没有字符串变量
但是有字符串常量
char *a 应该认为是个char类型指针
char *a=“hello”;字符串常量
char a[]=“hello”; 字符串数字
区别
1 #include<stdio.h>
2 int main()
3 {
4
5 char *a="hello";
6 printf("%s\n",a);
7 a="b y";
8 printf("%s\n",a);
9 a[2]='r';
10 printf("%s\n",a);
11 }
执行得到
hello
b y
Segmentation fault (core dumped)
字符串数组
1 #include<stdio.h>
2 int main()
3 {
4
5 char a[7]="hello";
6 printf("%s\n",a);
7 //a="b y"; 因为是数组类型,所以不能这样赋值
8 //printf("%s\n",a);
9 a[2]='r';
10 printf("%s\n",a);
11 }
得到
hello
herlo
关于为啥 a[2]=‘r’; 在字符串常量时候,会出现越界?是因为字符串存在于常量区