亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

基于c語言知識點的補遺介紹

2020-01-26 16:10:43
字體:
來源:轉載
供稿:網友

使用C很長時間,但是很難說對c的各個點都十分的透徹。雖然c不像c++那樣復雜,但是還有很多嘰里旮旯兒:并不是他們有多難,而是在于他們平時用的不多,或者和人的第一直覺相悖,再或者初學時經驗有限理解不深根本沒有記住。
下面的這些東西可能來自《c專家編程》或者網絡。最近發現基礎的經典的書籍常讀常新,原因可能有兩個:
1、隨著自己經驗的增長,你的認識可能會不一樣,思維的方式也會有所變化,而得到的東西自然會是新的東西。
2、早些時候經驗有限,有些點可能根本就沒有完全理解。現在你可以理解的更深刻。
這方面的書籍再比如《代碼大全》,前幾天翻了一下,又有不同的認識。
進入正題:
1、有符號和無符號的比較:
printf("%d/n", sizeof('A')):打印的值是4(或者是int的長度)而不是1。因為c有類型提升,它會首先把'A'提升為int類型,然后在傳給sizeof。表達式中的參數會提升為int或者double,然后在進行運算,之后再進行裁剪,獲得指定類型的值。
if (-1 <= sizeof(int)):sizeof的返回值是unsigned int,-1會被類型轉換為unsignedint,然后在進行比較。。
這里涉及到的是類型提升,隱式類型轉換。它會在表達式中發生,也會在函數入參中發生。
2、枚舉在內存中的大?。赫妓膫€字節。
3、局部變量也是字節對齊的:
        E_T g;
        E_T f;
        E_T e = false;
        char c1;
        char c2;
        int i1;
        char c3;
        int i2;
printf("%p, %p, %p, %p, %p, %p, %p, %p/n", &g, &f, &e, &c1, &c2, &i1, &c3, &i2);



--表示是補齊的位。
4、宏定義中的#和##:#的功能是將其后面的宏參數進行字符串化操作(Stringfication),簡單說就是在對它所引用的宏變量通過替換后在其左右各加上一個雙引號。
而##被稱為連接符(concatenator),用來將兩個Token連接為一個Token。
5、浮點數不可以用等于比較。
6、void foobar2() 表示函數入參個數有多個,不確定。如果表示沒有產生,應該是:void foobar2(void)
7、全局變量會被初始化為0,但是,棧中的局部變量不會被初始化。
8、inline函數和宏:內聯函數是真正的函數,但是它是在編譯期的優化。
9、    int a[5];    printf("%x/n", a);    printf("%x/n", a+1);    printf("%x/n", &a);    printf("%x/n", &a+1);
最后一個,&a+1,&a表示數組,所以,應該是增加數組大?。?*5個字節。
10、10U表示一個無符號類型的數字10.
11、移位運算的優先級比較低,低于四則運算。
12、左移n位,相當于乘與2的n次方。右移相當于處于2的n次方。
13、指針和數組:
1)、void fun(char buf[100])
{
printf("%d, /n", sizeof(buf));
}
打印的值是4,而不是100。
2)、在一個文件中char p[10] = "";
在另外一個文件中聲明:extern char *p;
然后,在聲明的文件中sizeof(p),答案是4。也就是,sizeof計算的是聲明的類型。
3)對于編譯器而言,一個數組就是一個地址,一個指針就是一個地址的地址。
4)所有作為函數參數的數組名編譯器都會轉換為指針,在其他所有的情況下,數組的聲明就是數組,指針的什么就是指針。
數組和指針相同情況的規則:
1、表達式中的數組名(與聲明不同)被編譯器當作一個指向該數組的第一個元素的指針。
2、下標總是與指針的偏移量相同。
3、在函數的聲明中,數組名被編譯器當作指向該數組第一個元素的指針。這個操作時編譯器完成的。原因是出于效率的考慮。因為這樣就是引用傳遞而非值傳遞。值 傳遞需要拷貝。這也可以看的出sizeof是在匯編中操作的。
arry[-1]的行為是未定義的。
總結:
1)a[i]這樣的形式對a進行訪問,總是被編譯器改寫為像*(a+i)的形式。
2)指針始終是指針,你不可以把它改寫成數組,但是可以通過數組的形式訪問。
3)數組作為函數的參數,會被編譯器改寫成指針。
4)指針和數組的什么必須配對。
14、聲明與定義:聲明可以由多個,定義只有一個。定義是特殊的聲明,它為對象分配了內存。而聲明時普通的聲明,描述其他地方創建的對象。
聲明的優先級規則:
a:從他的名字開始按照優先次序依次讀?。?BR>b:優先級的高低:
1、聲明中被括號括起來的那部分。
2、后綴操作符:
括號()表示是一個函數;
方括號[]表示是一個數組;
3、前綴操作符:*表示指向什么的指針;
4、const緊跟變量則修飾變量不可修改,緊跟類型則指向的東西不可修改。
15、多維數組:
a[2][3]:a是一個數組,有兩個元素。每個元素又是一個數組,有三個元素。
內存布局:a[0][0],a[0][1],a[0][2],a[1][0]...地址一直變大。
多維數組,數組的數組作為函數的形參,會被轉化為數組指針,數組的指針,也是行指針。本質上也是指針。
16、結構體默認的字節對齊一般滿足三個準則:
1) 結構體變量的首地址能夠被其最寬基本類型成員的大小所整除;
2) 結構體每個成員相對于結構體首地址的偏移量(offset)都是成員自身大小的整數倍,如有需要編譯器會在成員之間加上填充字節(internal adding);
3) 結構體的總大小為結構體最寬基本類型成員大小的整數倍,如有需要編譯器會在最末一個成員之后加上填充字節(trailing padding)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av电影免费观看高清| 欧美成人免费小视频| 欧洲中文字幕国产精品| 欧美黑人狂野猛交老妇| 日韩精品亚洲视频| 国产精品美女无圣光视频| 欧美一级高清免费播放| 欧美亚洲另类制服自拍| 欧美日韩成人在线视频| 亚洲色图日韩av| 亚洲精品影视在线观看| 国产美女久久久| www.久久色.com| 欧美视频在线观看免费| 欧美一区三区三区高中清蜜桃| 欧美中文字幕在线视频| 日本精品视频在线观看| 久久久久久久久久久人体| 欧美另类精品xxxx孕妇| 欧美刺激性大交免费视频| 亚洲www永久成人夜色| 久久偷看各类女兵18女厕嘘嘘| 久久人人爽人人爽人人片av高清| 久久精品国产欧美激情| 国产综合视频在线观看| 91精品久久久久久| 91精品久久久久久久久久久久久久| 久久亚洲私人国产精品va| 亚洲欧美国产精品va在线观看| 久青草国产97香蕉在线视频| 久久久免费电影| 国产精品久久久久久亚洲影视| 久久久久久91| 亚洲xxxxx性| 国产成人高潮免费观看精品| 日韩中文理论片| 97精品国产97久久久久久免费| 亚洲第一区第二区| 久久久精品影院| 亚洲第一视频在线观看| 成人精品一区二区三区电影免费| 欧美激情性做爰免费视频| 亚洲色无码播放| 成人免费xxxxx在线观看| 91啪国产在线| 日韩欧美在线视频日韩欧美在线视频| 国产精品入口夜色视频大尺度| 福利二区91精品bt7086| 精品视频9999| 在线看欧美日韩| 亚洲免费影视第一页| 亚洲成人激情在线观看| 欧美成在线观看| 韩国三级日本三级少妇99| 国产精品日日摸夜夜添夜夜av| 亚洲精品电影网在线观看| 国产精品高潮呻吟久久av无限| 亚洲国产精品人人爽夜夜爽| xvideos亚洲人网站| 精品久久久久久久久久| 欧美电影免费观看| 国产区精品在线观看| 黄色成人在线免费| 精品视频久久久| 欧美怡红院视频一区二区三区| 亚洲欧美精品一区| 精品色蜜蜜精品视频在线观看| 91香蕉电影院| 成人激情视频小说免费下载| 国产一区二区黄| 日韩网站免费观看| 中文字幕免费精品一区高清| 欧美精品久久久久| 国产午夜精品视频| 国产精品av在线播放| 66m—66摸成人免费视频| 久久人人爽人人爽人人片av高请| 欧美性一区二区三区| 性欧美办公室18xxxxhd| 亚洲国产精品人久久电影| 亚洲国产天堂久久国产91| 欧美精品www| 日韩av成人在线观看| 欧美韩国理论所午夜片917电影| 欧美—级a级欧美特级ar全黄| 亚洲视频自拍偷拍| 欧美一级黑人aaaaaaa做受| 在线观看亚洲区| 精品亚洲一区二区三区在线观看| 在线播放国产一区二区三区| 亚洲女同精品视频| 成人性生交大片免费观看嘿嘿视频| 一道本无吗dⅴd在线播放一区| 国产免费成人av| 91社影院在线观看| 国产精品自在线| 久久精品亚洲热| 日韩欧美在线网址| 亚洲美女又黄又爽在线观看| 亚洲精品国产精品国自产观看浪潮| 亚洲欧美综合精品久久成人| 欧美野外wwwxxx| 国产精品免费久久久| 欧美在线一级视频| 国产乱肥老妇国产一区二| 亚洲无av在线中文字幕| 九九热最新视频//这里只有精品| 国产精品成熟老女人| 午夜美女久久久久爽久久| 久热精品视频在线观看| 久久久久久国产精品三级玉女聊斋| 欧美高清自拍一区| 久久久久久久久久国产精品| 欧美亚洲日本网站| 亚洲国产免费av| 欧美大胆在线视频| 国内揄拍国内精品| 日韩精品视频免费在线观看| 欧美专区日韩视频| 日韩欧美国产一区二区| 精品久久久久久久大神国产| 亚洲激情视频网| 日韩精品中文字幕有码专区| 国产成人一区二区三区| 亚洲欧美国产精品久久久久久久| 日韩视频免费大全中文字幕| 日韩av片电影专区| 97视频人免费观看| 欧美成人性生活| 久久精品国产久精国产一老狼| 欧美精品免费播放| 日韩va亚洲va欧洲va国产| 国产乱肥老妇国产一区二| 成人日韩在线电影| 中文字幕亚洲一区二区三区| 伊人av综合网| 国产精品九九九| 久久久久免费视频| 一区二区在线视频| 538国产精品一区二区在线| 国产欧美日韩最新| 欧美一区第一页| 欧美剧在线观看| 成人激情视频在线播放| 欧美尤物巨大精品爽| 中日韩美女免费视频网址在线观看| 中文字幕v亚洲ⅴv天堂| 久久亚洲精品国产亚洲老地址| 亚洲亚裔videos黑人hd| 亚洲国产精久久久久久久| 欧美大尺度激情区在线播放| 日韩亚洲精品电影| 精品久久久久久国产91| 国产这里只有精品| 欧美激情一区二区三区成人| 91老司机精品视频| 亚洲高清一区二| 日韩中文字幕久久| 日本伊人精品一区二区三区介绍| 97香蕉久久夜色精品国产| 亚洲高清一区二| 久久久久久久久久久网站| 亚洲色图色老头| 亚洲免费成人av电影|