一、字符串与指针
1.对于字符串的理解
对于字符串而言,c语言并没有为其提供任何专门的表示法,完全使用字符数组和字符指针来处理。
2.字符数组和字符指针
字符数组:用字符串初始化字符数组,是把此字符串依次存入字符数组所占空间中,这个数组是有名字的。
字符指针:在内存中开辟了一个字符数组用来存放该字符串常量,但是这个数组是没有名字的。不能通过数组名来引用,只能通过指针变量来引用。
(此处我们就不解释字符数组了,主要来讲解字符指针)
2.字符指针的定义
char *p="china";
或char *p; p="china";
3.字符指针的使用
字符指针使用时,可以像使用字符数组时使用就行。
char *p="china";
printf("%s",p); 或者 printf("%c",p[2]);
注意:
1)在字符指针中,并不是把这个字符串“china"的内容给了它,而是将这个字符串的首地址给了指针变量p;
2)
char ch[10];
ch="china" //是错误的,因为ch为一个数组名,是一个地址常量,不能被赋值,也不能改变。
3)
char *p="china";
p[1]='z'; //是错误的,用字符指针定义的字符串,字符串的内容是不改变的,因为,用字符指针(p)定义的字符串(china),仅仅是将这串字符(china)的首地址给了字符指针(p),而不是将它的内容给了字符指针(p),所以内容是不可以改变的。
4)
char ch[10]="china",*p;
p=ch;
p[1]='z'; //是正确的,字符数组定义字符串,是在定义数组的同时便开辟了空间,将字符串存到数组元素中,而元素是一个变量,所以在数组定义字符串的时候,内容是可以改变的,从而当数组定义字符串的时候,用指针指向它,通过指针此时,内容是可以改变的。
5)
通过3)和4)可知字符数组可以通过输入函数来为其赋值,而字符指针不可以!