假設給帶int型別形參的函式傳遞乙個值,要傳遞int型別的變數,但是也可以傳遞int型別常量,對於帶陣列形參的函式,情況不同,可以傳遞陣列,但是沒有等價的陣列常量。c99新增了復合字面量(compound ltra)。字面量是除符號常量外的常量,例如,5是int型別字面量,81.3是double型別的字面量,『y』是char型別的字面量,「elephat」是字串方面量。發布c99標準的委員會認為,如果有代表陣列和結構內容的復合字面量, 在程式設計時會更方便。
1、對於陣列,復合字面量類似陣列初始,前而是用括號括起來的型別名。例如,下面是乙個普通的陣列宣告:
int diva[2] = ;
2、下面的復合字面量建立了乙個和diva 陣列相間的匿名陣列也有兩個int型別的值:
( int [2] ) ;
注意, 去掉宣告中的陣列名,留下的int (2)即是復合字面量的型別名.
3、初始化有陣列名的陣列時可以省略陣列大小,復合字面量也可以省略大小,編澤路會自動計賀陣列當前的元素個數:
( int ) ;
4、因為復合字面量是匿名的,所以不能先建立然後再使用它,必須在建立的同時使用它。使用指標記錄位址就是一種用法。也就是說,可以這樣用:
int * ptl;
ptl = ( int [2] ) ;
注意,該復合字面量的字面常量與上面建立的diva陣列的字面常量完全相同。與有陣列名的陣列類似,復合字面量的型別名也代表首元素的位址,所以可以把它賦給指向int的指標。然後便可使用這個指標。例如,本例中*pt1是10,pt1[1]是 20。
5、還可以把復合字面量作為實際引數傳遞給帶有匹配形式引數的函式:
int sum(const int ar, int n);
。。。int total3;
total3 = sum((int ),}
如上所示,該復合字面量的型別是int [2][4], 即乙個2x4的int陣列。
例子:
記住,復合字面量是提供臨時需要的值的一種手段。復合字面量具有塊作用域,這意味這它的作用範圍很有限,脫離作用塊不會生效。
復合字面量
復合字面量,是除了符號常量之外的常量,例如 5是int的字面常量,1.2是double的字面常量,a 是char的字面常量,hello 是字串的字面常量。一般來說,字元常量可以方便初始化變數,而且可以用於相應運算。其中較為特殊的還有陣列的復合字面常量。形如 int 2 我們可以通過這樣的字面常量來初...
復合字面量
所謂字面量就是固定數值的表示。數值和字串型別都有字面量的表達。如 100,1.23f,literral 都是字面量 int x 100 float y 1.23f char s literral 可看到字面構建的同一時候就能夠複製給變數使用。既然是固定數值,那麼在初始化的時候就能夠構建。那麼復合字面...
C語言復合字面量的使用
c99增加的特性,復合字面量 composite literal 一旦熟悉並使用,便會體會到簡潔強大的表達。所謂字面量就是固定數值的表示。數值和字串型別都有字面量的表達。如 100,1.23f,literral 都是字面量 int x 100 float y 1.23f char s literra...