一、字符串:
1、C语言中字符串是以 /0 结尾的;
2、C语言中没有字符串类型,用字符数组来模拟字符串;
3、字符串分配内存 可以是 栈区、堆区、或者全局区;
二、字符数组的初始化:
1、固定长度
例如:char buf[4 ] = {'a','b','c','d'}; //结尾没有‘/0’ 不是C风格
2、不固定长度:
例如:char buf[ ] = {'a','b','c','d'}; //结尾没有‘/0’ 不是C风格
3、字面值对字符数组初始化:
例如: char buf [ ] = "abcd"; //字符数组内自动补齐 ‘/0’
三、计算字符串 和 字符数组 长度的方法:
1、计算字符串:用strlen();函数,包含头文件string.h;不将 ‘/0’ 计算在内;
2、计算字符数组: 用sizeof()关键字,将字符数组末尾的‘/0’计算在内。
四、在使用字符串时候应注意的问题:
1、初始化字符数组的时候 char buf [ ] = "abcd";的方式时,“abcd”是字面值,在内存中被分配在常量区,不可更改。
2、字符数组 char buf[ ] = "abcd"; 中数组名buf是字符串的首元素地址,不可赋值更改。原因是编译器为确保栈区分配给字符数组buf的内存空间在释放时候得到完全释放。
3、对字符串进行操作多引进指针变量,char* p = “abcd”;p所指向的是字符串”abcd”的首地址(就是指向a),p+1 则指向b,以此类推;这时候p可以改变,而*p不可改变。原因就是第1条,”abcd“在常量区,而p在栈区。