2017年12月19日17:12:10
字符指针和字符数组的整理
1.
字符数组是由若干个元素组成,每个元素中存放的是一个字符,而字符指针变量中存放的是第一个字符的地址
2.
char * a;a = "I love China";指针变量可以赋值,但是数组名不可以这样赋值。
char a[12]; a[0]=‘I‘;合法的。 a = "I love China";//不合法!!!
3.char *p = "I love China";//定义指针变量p,并且指向第一个元素I的地址。
等价于:char * a;a = "I love china!";
但是数组:
char str[14]="I love China!";
不等价于char str[14];str[]="I love China"; //报错!!!!
4.字符数组分配若干个存储单元,但是指针变量值分配一个存储单元。
5.指针变量的值是可以改变的,而数组名代表一个固定的值(数组首元素的地址),不能改变。
eg: char *a = "I love China";
a = a+7;//正确,指向C的地址
char str[]={"I love China"};
str = str+7;//报错!!!
6.字符数组中的各元素的值是可以改变的(可以对他们再赋值),但字符指针变量指向的字符串常量中的
内容是不可以被取代的(不能再对它进行赋值)。
char a[] ="House";
char * b="House";
a[2] = ‘r‘;//合法,r取代a数组元素中a[2]的原值u
b[2]=‘r‘;//非法,字符串常量是不能改变的
7.用指针变量指向的一个格式字符串,可以用它代替printf函数中的格式字符串。
char * format;
format = "a = %d,b=%f\n";//等价于:char format[]="a=%d,b=%f\n";
printf("format,a,b");
注意:定义数组时初始化或逐个对元素赋值,而不能用赋值语句对数组整体赋值
eg:char format[];
format="a=%d,b=%d\n";