1. 程式人生 > >字符指針和字符數組

字符指針和字符數組

form 字符數 組成 bsp pos 組元 blog for 不可

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";

字符指針和字符數組