C语言:
没有字符串类型—string,所以,用字符数组或指针变量来存储一串字符。
C++:
有字符串类型—string,仍然可以用字符数组存储一串字符,但不能用指针变量了。
下面,对C语言中两种字符存储的初始化及赋值操作进行描述。
一,初始化
③④与①②相同。
①②:用字符串“abc”对(字符数组)a 和(指针变量) c 进行初始化,两者都可以。
⑤⑥:用一串单个字符对(字符数组)a 和(指针变量)c 进行初始化,a 可以,c 不可以。
原因:字符串的特殊性 字符串本身代表首元素的地址,所以,能用个指针来表示。而一串单个字符,并没有表示地址的功能,所以它就不能放进(指针变量)c 里面了。 (当然,对数组来说,字符串 “abc” 就是 {’a‘,’b‘,’c’,’\0‘},它跟 {’a‘,’b‘,’c‘},没什么区别,就是多了一个元素而已,不用什么地址不地址的,所以,字符数组既能用字符串初始化,也能用{ } }列表初始化) |
二,赋值
a1:不能赋值: a1是个常指针,定义时就开辟了空间,并且a1指向了 char[5] 的首地址,a1的指向不能变,不能再指向“abc”的地址了,可以利用函数赋值:strcpy(a1,"aa"); |
a2:能赋值: a2是个指针变量,a2还没有指向某个位置,通过赋值让 a2 指向“abc”的地址。 |