字符串常量和字符数组
在c语言中,对于字符和字符串的处理极其频繁,但是在c语言中是没有字符串类型的,字符串通常放在常量字符串中或者字符串数组中,两者之前也是存在着差别,字符串常量是储存在常量空间中的不能被修改的,而字符数组存放在数组空间中,可以被修改。
1、char *a = “abcd”;
由上述可知,ch是一个是一个char*类型的指针变量,他的值是可以改变的(即他指向的空间可以改变)。
2. char b[ ] = " abcd " ;
ch是在栈区中开辟空间并储存的字符数组,但是ch本身是这个char型数组的数组名,是一个常量,不能被修改,但是ch是一个字符数组,数组内存储的数据是可以被修改的。
总结:
char*是变量,值可以改!
char[]是常量,值不能改变!
解释:
a是一个char型指针变量,其值(即指向)可以改变;
b是一个char型数组的名字,也是该数组首元素的地址,是常量,其值不可以改变
char[]对应的内存区域总是可写,char*指向的区域有时可写,有时只读
解释:
a指向的是一个字符串常量,即指向的内存区域只读;
b始终指向他所代表的数组在内存中的位置,始终可写!
注:
char *本身是一个字符指针变量,但是它既可以指向字符串常量,又可以指向字符串变量,指向的类型决定了对应的字符串能不能改变!