C語言的復合文字

2022-04-04 06:14:47 字數 1050 閱讀 9838

假設需要向乙個帶有int型參量的函式傳遞乙個值,這時可以傳遞乙個int型常量,也可以傳遞乙個int型的變數。在c99標準之前,陣列引數情況於現在不一樣,沒有所謂的陣列常量可供傳遞,而在c99中增加了復合文字。文字是非符號的常量,如5是int型的文字25.3是double型的文字。由此可見如果有能夠表示陣列和結構內容的文字,那麼程式設計將會更加方便。

對於陣列來說,復合文字看起來就像是在陣列初始化列表加上圓括號括起來的型別名,例如:下面是普通陣列的宣告方法:

int a[2]=;

下面是乙個復合文字,它建立了乙個包含兩個int型的無名稱陣列:

(int [2]);

注意、型別名就是前面宣告中去掉a的剩餘部分,即int [2]

正如初始化乙個陣列時可以不指定陣列的大小一樣,初始化乙個復合文字也可以省略大小:

(int ); //有三個元素的復合文字

由於這些符合文字沒有名字,不能在乙個語句中建立他們,需要在其他語句中使用。使用的一種方法是使用指標:

int *p;

p=(int );

*p==10

另外復合文字可以作為引數傳遞給乙個函式:

int sum(int ar,int n)

int tot;

tot=sum((int ),4);

這種給函式傳遞陣列資訊而不用先建立陣列的方式,符合常量通常的使用方法。

int (*p)[4];

p=(int [2][4]),};

其中復合文字型別是int [2][4],即乙個2*4的int陣列。

綜合使用**:

#include #define cols 4

void sum2d (int a[cols],int row);

void sum (int a,int n);

int main (void)

; p2=(int [2][cols]),};

sum (p1,2);

sum2d (p2,2);

}void sum (int a,int n)

{ int tot=0;

for (int i=0;i

復合文字(C99)

1.假如需要向帶有乙個int參量的函式傳遞乙個值,您可以傳遞乙個int變數,也可以傳遞乙個int常量,比如5。在c99標準之前,陣列引數的情況是不相同的 可以傳遞陣列,但沒有所謂的陣列常量可供傳遞。c99新增了復合文字 compound literal 文字是非符號常量,例如5是int型別的文字,8...

C語言 復合語句

復合語句 compound statement 簡稱為語句塊,它使用大括號把許多語句和宣告組合到一起,形成單條語句。語句塊與簡單的語句不同,語句塊不用分號當作結尾。用括號 括起來組成的乙個語句稱復合語句。在程式中應把復合語句看成是單條語句,而不是多條語句,例如 x y z a b c printf ...

C語言復合字面量的使用

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