字符指針變量和字符數(shù)組在C語言的討論
(2)賦值方式。對字符數(shù)組只能對各個元素賦值,不能用以下辦法對字符數(shù)組賦值;char str[14]; str=“I love China.”;
對字符指針變量,可以采用下面方法賦值:
char *a; a= “I love China.”; /*賦給a的是串的首地址*/
(3)對字符指針變量賦初值:
char *a=“I love China.”; 等價于 char *a; a=“I love China.”;
而對數(shù)組的初始化:
char str[14]={“I love China.”}; 不等價于 char str[14];
str[]=“I love China.”;
即數(shù)組可以在變量定義時整體賦初值,但不能在賦值語句中整體賦值。
(4)如果定義了一個字符數(shù)組,在編譯時為它分配內(nèi)存單元,它有確定的地址。 而定義一個字符指針變量時,給指針變量分配內(nèi)存單元,在其中可以放一個地址值,也就是說,該指針變量可以指向一個字符型數(shù)據(jù),但如果未對它賦一個地址值,則它并未具體指向一個確定的字符數(shù)據(jù)。這很危險。
如: char str[10]; scanf(“%s”,str); 是可以的
char *a;
scanf(“%s”,a); 能運行,但危險,不提倡,在a單元中是一個不可預料的值。應當 char *a,str[10]; a=str; scanf(“%s”,a);
(5)指針變量的值是可以改變的,數(shù)組名雖然代表地址,但它的值是不能改變的。可以下標形式引用所指的字符串中的字符。
如:main()
{char *a=“I love China.”;
a=a+7;
printf(“%s”,a); }
又如:char str[]={“I love China.”}; str=str+7; printf(“%s”,str); 是錯的
(6)用指針變量指向一個格式字符串,可以用它代替printf函數(shù)中的格式字符串。也可以用字符數(shù)組實現(xiàn),但由于不能采用賦值語句對數(shù)組整體賦值。
如:char *format; format=“a=%d,b=%f\n”; printf(format,a,b);
等價于:printf(“a=%d,b=%f\n”,a,b);
也可以:char format[ ]=“a=%d,b=%f\n”; printf(format,a,b);
點擊加載更多評論>>