char数据类型
设计char数据类型的目的是为了容纳字符型值,字符的本质是小整型值。char的最小范围是0~127,对于char、int等基本数据类型的具体长度可查看头文件limits.h。对于缺省的char值,要么是signed char:-127~127,要么是unsigned char:0~255,这取决于编译器。当程序所使用的char型变量的值位于signed char和unsigned char的交集时,程序具有可移植性。ASCII字符集中的字符都是位于这个范围的。
字面值(literal)
字面值是字面值常量的缩写,这是一种实体,指定了自身的值并且不允许发生改变。在ANSI C中允许命名常量,声明为const变量,与普通变量很类似,只是在创建const变量时,就要初始化该变量,并且之后就不允许再发生改变。
const int Data = 1; //声明常量 int const Data = 1; //声明常量 //这两种的声明是等效的,选取适合自己的一种即可
const常量在创建时获取值的方法:
1)定义时初始化。
2)在函数中声明const形参,当函数被调用时会得到实参的值。
int Fun1( char const *pstr ) //方式2 { int Len = strlen(pstr); return Len; } void Fun2(void) { int const Data = 1; //方式1 int len = Fun1("string"); }
字符串
字符串的概念:是一串以NUL字节结尾的零个或多个字符。即使是空字符串依然存在作为终止符的NUL字节,在c语言中并没有字符串类型,不过c语言提供字符串常量,同时字符串以字符数组的形式存在。
字符串常量中的字符和NUL终止字节都存储在内存的某个位置,在ANSI C中不允许修改字符串常量。若要修改字符串,则应该将它存储于字符数组中。
当一个字符串常量出现在一个表达式中时,表达式所使用的值就是这些字符串存储的地址,而不是这些字符本身。因此,可以把字符串常量赋值给“指向字符的指针”。
char str[] = "string"; //字符数组的形式存储字符串,str是“string”字符串的一个拷贝 char *pstr = "string"; //字符串常量存储的位置 str[1] = 'T'; //ok,字符数组可以修改 *(pstr+1) = 'T'; //error,字符串常量不可修改