C語言你必須知道的

前言

C語言學(xué)過了, 認(rèn)真思考過嗎?幾個栗子, 或許讓你得到一些裝逼技能薪夕。

example

    int a[5] = {1, 2, 3, 4, 5};
    
    printf("%d\n", 0[a]);
    
    printf("%d\n", *a);

說明

a[0] = *a = *(a + 0) = *(0 + a) = 0[a]
然而這種寫法很少見, 但是可以用赫悄。比如: 1[a]用來訪問數(shù)值中下標(biāo)為1的元素

example

     int a[5] = {1, 2, 3, 4, 5};
    
    printf("%p\n", a);
    printf("%p\n", &a);
    
    int (*p)[5] = &a;
    p++;
    
    int *q = (int *)p;
    q--;
    
    printf("%d\n", *q);

輸出

0x7fff5fbff7f0

0x7fff5fbff7f0

5

說明

a是數(shù)組首個元素的地址和&a[0]等價原献。 雖然他們的值都和&a一樣, 但是意義是不一樣的, &a是整個數(shù)組的首字節(jié)地址涩蜘。感覺沒區(qū)別嚼贡, 但是上面的例子會讓你理解熏纯, 因為他們類型同诫, 不一樣+1的時候步長也不一樣。a是int *類型的樟澜, 而&a是 int(*)[5]類型的误窖。在尋找時候起點(diǎn)相同邁出的步子不同肯定結(jié)果就不同了。結(jié)果就是先跑到了數(shù)組的最后秩贰, 然后回來一個步長霹俺, 自然也就是5了。

example

    char *str = "Hello, world";
    
    printf("%s\n", str);
    
    printf("%s\n", "Hello");
  
    printf("%c\n", *"world");
    
    printf("%c\n", "Hello"[0]);
    
    printf("%c\n", 0["Hello"]);
    
    
    printf("%c\n", 1["Hello"]);
    
    printf("%c\n", *("Hello" + 1));

輸出

Hello, world 
Hello
w
H
H
e
e

說明

這個初學(xué)者可能很難理解吧毒费, 因為對字符串的存儲不理解丙唧。字符串在只讀數(shù)據(jù)段, 在棧段只保存著它的首個字符地址觅玻, 這樣就很方便的找到它了想际。 難道第一行中char *str = "Hello, world", 你不覺得str是一個指針嗎?(指針是什么培漏?指針就是一個變量, 只是用來保存地址而已)那么"Hello, world"就是一個地址, 一個字符一個字節(jié)保存哪一個字節(jié)的地址呢?當(dāng)然保存首個元素的地址胡本。還值得一提的是字符數(shù)組保存在棧段牌柄, 所以可以被修改, 但是只讀數(shù)據(jù)段侧甫, 是不能改的珊佣。如果改了就.....下圖

通過地址修改只讀數(shù)據(jù)段內(nèi)容

example

你認(rèn)識下面的p是什么嗎?

  • int p[10]

  • int *p[10]

  • int (*p[10])(int, int)

  • int (*p)(int, int)

  • int (*p[10])(int, int);

int p[10]

這是一個數(shù)組

int *p[10]

這是一個指針, 指向什么呢? 去掉*就是指向的東西, int [10], int [10]是一個什么呢? int a[10]這是一個數(shù)組披粟。所以p是一個數(shù)組咒锻, 數(shù)組的每一個元素都是指針。

  • int (*p[10])(int, int)

有了上面的基礎(chǔ)那就很好解釋了守屉。p是一個數(shù)組虫碉, 每一個元素都是一個指針, 每個指針指向一個函數(shù)(int a(int, int))胸梆, 函數(shù)是輸入為兩個int敦捧, 返回值是int類型。

  • int (*p)(int, int)

p是一個指針碰镜, 指向一個返回值是int的函數(shù)兢卵, 這個函數(shù)就是int (int, int)

example

終端原始環(huán)境下運(yùn)行

#include <stdio.h>
#include <unistd.h>

int main(){


        while(1){
                sleep(1);
                printf("Hello, world");
        }

        return 0;
}   

現(xiàn)象

什么都沒有出現(xiàn), 但是把sleep改為usleep就會打印绪颖。

原因是數(shù)據(jù)緩沖區(qū)滿了秽荤, 或者 \n 沖刷函數(shù)就會輸出到屏幕上。
如果你還不知道柠横, 再學(xué)學(xué)吧窃款。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市牍氛,隨后出現(xiàn)的幾起案子晨继,更是在濱河造成了極大的恐慌,老刑警劉巖搬俊,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件紊扬,死亡現(xiàn)場離奇詭異,居然都是意外死亡唉擂,警方通過查閱死者的電腦和手機(jī)餐屎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玩祟,“玉大人腹缩,你說我怎么就攤上這事。” “怎么了藏鹊?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵胜臊,是天一觀的道長。 經(jīng)常有香客問我伙判,道長象对,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任宴抚,我火速辦了婚禮勒魔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菇曲。我一直安慰自己冠绢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布常潮。 她就那樣靜靜地躺著弟胀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喊式。 梳的紋絲不亂的頭發(fā)上孵户,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音岔留,去河邊找鬼夏哭。 笑死,一個胖子當(dāng)著我的面吹牛献联,可吹牛的內(nèi)容都是我干的竖配。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼里逆,長吁一口氣:“原來是場噩夢啊……” “哼进胯!你這毒婦竟也來了坦喘?” 一聲冷哼從身側(cè)響起逆皮,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渣叛,沒想到半個月后班眯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體希停,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烁巫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年署隘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亚隙。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡磁餐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诊霹,我是刑警寧澤羞延,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站脾还,受9級特大地震影響伴箩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鄙漏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一嗤谚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怔蚌,春花似錦巩步、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至籍胯,卻和暖如春竟闪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杖狼。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工瘫怜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人本刽。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓鲸湃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親子寓。 傳聞我的和親對象是個殘疾皇子暗挑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一斜友。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu)炸裆; ...
    朱森閱讀 3,444評論 3 44
  • 1.語言中變量的實質(zhì) 要理解C指針,我認(rèn)為一定要理解C中“變量”的存儲實質(zhì)鲜屏, 所以我就從“變量”這個東西開始講起吧...
    金巴多閱讀 1,772評論 0 9
  • 計算機(jī)二級C語言上機(jī)題庫(南開版) 1.m個人的成績存放在score數(shù)組中烹看,請編寫函數(shù)fun,它的功能是:將低于平...
    MrSunbeam閱讀 6,366評論 1 42
  • 昨晚躺下后,翻來覆去洛史,不知是午睡太久惯殊,還是娃外出的緣故? 今晚一個人在家也殖,拖了地土思,邊看夏令營群,邊懂你,一心兩用己儒,...
    小空同學(xué)閱讀 142評論 0 2
  • 坐在學(xué)校東門的廣場上崎岂,聽著悲傷的歌曲,心中的憂傷陡然劇增闪湾,淚水在眼中打轉(zhuǎn)冲甘。 看著來來往往的人群,回想剛才對男朋...
    Laleo閱讀 545評論 2 1