• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統計

            最新評論

            談談C99的新特征:復合文字(compound literal)和伸縮型數組

            在C99標準以前:可以給函數傳遞數組,但是沒有所謂的數組常量可以來傳遞。C99新增了復合文字。文字是非符號常量。例如:5是int類型的文字;82.3是float類型的文字等等。C99標準委員會認為:如果又能夠表示數組和結構內容的復合文字,那么在編寫程序的時候要方便的多。 對于數組來說,復合文字看起來像在數組的初始化列表前加上圓括號括起來的類型名。例如,下面是普通數組的聲明方式: int diva[2] = {10,20}; 下面是一個復合文字,創建了一個包含兩個int值的無名稱數組: (int[2])(10,20); 注意:類型名就是前面聲明中去掉diva后剩下的部分。 正如初始化一個命名數組時可以省略數組大小一樣,復合文字也可以,如: (int []){1,2,3}; 由于這些復合文字沒有名稱,因此不可能在一個語句中創建它們,然后在另一個語句中使用它們。而是必須在創建的同時使用某種方法來使用它們,一種方法是使用指針保存它們的位置,比如: int* ptr; ptr = (int [2]){3,4}; 于是*ptr就是3,ptr[1]是4. 另外,復合文字也可以也可以作為實際參數被傳遞到帶有類型與之匹配的形式參數的函數中: int sum(int ar[],int n); ... int totle; totle = sum((int [3]{1,2,3}),3);這非常方便,使我想起了c++中pair容器中的一個pair方法,也像python語言中的lambda,一次性的使用特性。 結構體也是一樣的,比如: int add(struct xy instance) { return instance.x+instance.y; } 可以這樣調用: int sum = add((struct xy){1,2}); 第二個很讓人欣喜的特性是伸縮型數組,它用于結構體中。這個特性可以聲明最后一個成員是一個具有特殊屬性的數組。該特使屬性有兩點,1.這個數組不存在,至少不是立即存在的。2.我們可以編寫代碼適當的使用該數組成員,就像它確實存在而且擁有你需要的任何數目的元素一樣。聽起來很奇怪,我們看一些例子. 首先看看聲明這么一個結構體的規則: 1.伸縮型數組成員必須是最后一個數組成員 2.結構中必須至少有一個其他成員 3.伸縮型數組就像普通數組一樣被聲明,除了他的方括號是空的 比如: struct flex { int count; double average; double score[]; }; 如果聲明了一個struct xy的結構體,你不能使用score做任何事情,因為沒有為他分配內存空間。實際上,C99的意圖不是讓你struct xy類型的變量,而是希望你聲明一個指向這個結構體類型的指針,然后用malloc來分配合適的內存空間。例如,假設想要用score表示含有5個double型數值的數組,那么要這樣做: struct flex ptr; ptr = malloc(sizeof(struct flex) + 5*sizeof(double));現在我們有了足夠的內存,以存儲count,average和5個double型數值的數組了??梢允褂胮tr來訪問他們: ptr->count = 5; ptr->score[2] = 12.3; 你可以在你任何時候修改這個結構體的占用空間的大小。 這正是讓人高興~~

            posted on 2010-03-29 19:24 大龍 閱讀(320) 評論(0)  編輯 收藏 引用

            伊人丁香狠狠色综合久久| 久久精品一区二区| 亚洲伊人久久综合中文成人网| 国产一区二区精品久久凹凸| 日日狠狠久久偷偷色综合96蜜桃| 亚洲va久久久久| 久久综合狠狠综合久久激情 | 色播久久人人爽人人爽人人片aV | 久久99精品国产一区二区三区 | 久久久久99精品成人片| 国产成人精品综合久久久久| 狠狠色丁香婷婷久久综合不卡 | 久久丫精品国产亚洲av不卡| 激情综合色综合久久综合| 国产美女亚洲精品久久久综合| 日韩精品国产自在久久现线拍| 午夜精品久久久久| 精品欧美一区二区三区久久久| 色狠狠久久AV五月综合| 无码精品久久一区二区三区 | 亚洲婷婷国产精品电影人久久| 精品久久8x国产免费观看| 久久精品免费全国观看国产| 狠狠综合久久综合中文88| 久久国产精品-国产精品| 婷婷久久久亚洲欧洲日产国码AV | 综合久久精品色| 久久久中文字幕日本| 91性高湖久久久久| 久久中文字幕一区二区| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久人妻无码中文字幕| 亚洲色欲久久久久综合网| 久久久国产精品| 色婷婷久久久SWAG精品| 久久综合色区| 日本精品久久久久影院日本 | 国产精品久久久久影院色| 欧美亚洲色综久久精品国产| 18禁黄久久久AAA片| 久久亚洲欧美国产精品 |