char a[10]=“text”:语法可能错误,表达的是 char a[] = “text”
- 代表一个数组
- sizeof为数组的大小
- 存储在内存中的栈段
- a不可以被修改,因为数组名为数组第一个元素的地址
- a[0]可以被修改
char *a=“text”:
- a是一个指针,*a是指针的内容
- sizeof为指针类型的大小,4bytes
- text的地址被存储在栈中,变量为a;text文字本身被存储在
.rodata
中 - a可以被修改,因为a是指向.rodata段的一个位于栈中的变量
- a[0],*a 不能修改,因为内容在
.rodata
- 修改变量a的值为 “text1”:a=“text1” 指的是,将 “text1” 在内存中的地址给a,而 “text” 仍在.rodata中的地址不变
Reference
c-differences-between-char-pointer-and-array
whats-the-difference-between-char-s-and-char-s-in-c