1.字符数组:
char str[]=”sbdc”;
char str2[]={“abdcdef”};
但是如果char str2[]={‘a’,’d’,’f’,’g’},想用printf(“%s”,str)这种格式输出,会遇到如下的结果:
原因为 printf这个函数是遇到’\0’就结束,所以解决的方法是:char str2[]={‘a’,’d’,’f’,’g’,’\0’},结果如下:
或者解决方法为:
也就是说,定义数组的时候,也设置了数组的长度也可以输出理想的结果!
2.字符串指针(指向一个字符串的指针变量)
例如: int *p; 分两种:
(1)字符指针(总结:用单引号的为字符指针)
char ch=’a’;
char *s=&ch;
(2)字符串指针(用双引号的为字符串指针)
cahr *str=”abc”;
从上面这个实例,可以知道 定义了一个字符串指针变量,变量名为 str,str存放的是 “abc”这个字符串的首地址,这个首地址就是第一个字符的地址 &a.
用字符串指针遍历读取字符串的每个字符两种方法:
( str+1 表示指向下一个元素的地址)
注意:字符串指针不能直接接收键盘输入的内容!
字符串可以从键盘中输入内容:
(要注意以上三种的区别) 因为 str=&str[0]
字符串指针不能直接接收键盘输入的内容:
字符串数组保存在栈区,可以被读写。字符串的写入操作如下:
字符串指针存放内存中的常量区,只可以读,不能被修改。
3.char类型的指针数组,可以保存多个字符串
字符串数组的要求有两个:
(1)该数组是二维的字符数组
(2)是char类型的指针数组
char *str[]={“asd”,”fgh”,”ert”};
用for循环来遍历每个字符串
for(int i=0;i<3;i++){printf(“%s\n”,str[i])};
注意:
1). 不能修改 字符串的内容,因为每个字符串都在内存的常量区存储(常量的数据只能读,不能修改)
2). 字符串指针变量可以重新被赋值,但是指向会发生改变,如果s重新被赋值的内容是相同的,此时,指向没有发生改变
3)字符数组不能被整体重新赋值,但是可以改变某个字符!
4.二维的字符数组也可以存放多个字符数组,可以改变某个字符串的某个字符。