復合字面量

2022-06-05 11:24:10 字數 784 閱讀 7879

復合字面量,是除了符號常量之外的常量,例如:5是int的字面常量,1.2是double的字面常量,'a'是char的字面常量,"hello"是字串的字面常量。一般來說,字元常量可以方便初始化變數,而且可以用於相應運算。其中較為特殊的還有陣列的復合字面常量。形如:(int [2])

我們可以通過這樣的字面常量來初始化陣列:

int a[2] = ;,這時候我們省略了等號後面的陣列型別名是沒有問題的。

還有可以使用這樣常量作為需要的陣列引數,這時候就需要標註清楚陣列的型別名,對於陣列內元素都已知情況下,我們也可以省略陣列的元素數目:

(int ),編譯器將會將其識別為int [5]型別陣列。

但是符合字面量作為一種匿名型別,我們必須在建立時候使用,否則就將會被廢棄,我們可以通過乙個指標來接受它的位址(它本身就作為它首元素的位址,對於c語言的各種型別的陣列都是如此):

int *a = (int );

我們來觀察一些用例

#include 

​int main (void) ;

printf("a --> %d\n", *a);

printf("a+1 --> %d\n", *(a+1));

return 0;}​

/**a --> 1

a+1 --> 2

**/

復合字面量

所謂字面量就是固定數值的表示。數值和字串型別都有字面量的表達。如 100,1.23f,literral 都是字面量 int x 100 float y 1.23f char s literral 可看到字面構建的同一時候就能夠複製給變數使用。既然是固定數值,那麼在初始化的時候就能夠構建。那麼復合字面...

復合字面量

假設給帶int型別形參的函式傳遞乙個值,要傳遞int型別的變數,但是也可以傳遞int型別常量,對於帶陣列形參的函式,情況不同,可以傳遞陣列,但是沒有等價的陣列常量。c99新增了復合字面量 compound ltra 字面量是除符號常量外的常量,例如,5是int型別字面量,81.3是double型別的...

C語言復合字面量的使用

c99增加的特性,復合字面量 composite literal 一旦熟悉並使用,便會體會到簡潔強大的表達。所謂字面量就是固定數值的表示。數值和字串型別都有字面量的表達。如 100,1.23f,literral 都是字面量 int x 100 float y 1.23f char s literra...