回覆列表
-
1 # 不會游泳的驢
-
2 # 使用者698932142283960
注意初始化和賦值是不同的。{'a', 'b', 'c'} 這東西不是表示式,沒有型別,只能用來初始化陣列或結構體。而陣列可以隱式轉換成指向其首元素的指標右值,該值能初始化或複製給指標物件。另外 C 字串指的是以零值字元結尾的連續字元物件序列,並不是字元指標,只是可以透過字元指標處理字串。C 語言可以寫 char *p = (char[]){'a', 'b', 'c'}; 。也可以用在賦值裡。右邊的東西是複合字面量,是左值。生存期為當前塊(函式內部)或整個程式執行期(函式外部)。這段宣告的作用是建立一個無名陣列,再由它隱式轉換出來的指標值初始化指標物件 p ,和題目上的寫法相比少聲明瞭一個識別符號。
-
3 # 使用者4217359337261783
a="cool";這是地址賦值,將一個常量字串的首地址賦值給a這個指標。*a="cool";這是字元賦值,不是字串!雖然a叫字串指標,但char* a這樣的定義,*a必然是一個字元,而不是多個。因此後面的常量會被忽略為一個字元,進行數值賦值(也可以理解為複製賦值,區別於地址賦值)。在a沒有分配地址的情況下,直接 *a=“xxx” 會造成記憶體報錯,而a=則不會。
1、單字元賦值,可透過陣列下標方式或指標方式,引用陣列元素,進行賦值。
例子:
char a[10];
char ch='a';
for( i=0;i<10;i++ )
a[i]=ch+i ; //可透過陣列下標引用陣列元素,完成賦值
char *p;
for( p=a; p<a+10; p++ )
*p=ch++; //透過指標對陣列相應元素賦
2、字串賦值,可使用string.h標頭檔案中的字串操作函式進行賦值。
例子:
char a[10];
strcpy( a, "abcdefgh");
sprintf(a, "%s", "abcdefgh");
擴充套件資料:
C語言給字元陣列賦值的優點:
1、簡潔緊湊、靈活方便
C語言一共只有32個關鍵字,9種控制語句,程式書寫形式自由,區分大小寫。把高階語言的基本結構和語句與低階語言的實用性結合起來。C 語言可以像組合語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2、運運算元豐富
C語言的運運算元包含的範圍很廣泛,共有34種運運算元。C語言把括號、賦值、強制型別轉換等都作為運運算元處理。從而使C語言的運算型別極其豐富,表示式型別多樣化。靈活使用各種運運算元可以實現在其它高階語言中難以實現的運算。