20160720IOS_C

1驶冒、運算符
取模運算符:%
增量運算符:++ 前綴,后綴
減量運算符:--
+=, -=, =, /=, %=
2相寇、類型轉(zhuǎn)換基本規(guī)則:
(1)當(dāng)出現(xiàn)在表達式里脏款,有符號和無符號的char 和 short 類型都將被自動轉(zhuǎn)換為int,在需要的情況下退盯,將自動被轉(zhuǎn)換為unsigned int
(2)在包含兩種數(shù)據(jù)類型的任何運算里彼乌,兩個值都被轉(zhuǎn)換稱兩種類型里較高的級別
(3)類型級別從高到低為:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int, int
(4)當(dāng)作為函數(shù)的參數(shù)被傳遞時,char 和 short 會被轉(zhuǎn)換為int渊迁,float會被轉(zhuǎn)換為double慰照,可以通過函數(shù)原型來阻止自動提升的發(fā)生
強制轉(zhuǎn)換類型:(type) 變量名
3、函數(shù)
返回值類型 函數(shù)名(參數(shù)列表) //沒有參數(shù)就用void 琉朽, 形參:函數(shù)里聲明的參數(shù)毒租,實參:傳遞給參數(shù)的值
{
statement;
}
4、關(guān)系運算符
<, <=, ==, >=, >, !=
5箱叁、for循環(huán)
for (count = 1; count <= NUMBER; count++)
{
statement;
}
可以使用逗號運算符在for循環(huán)中使用多個初始化或更新表達式
for (a = 1, b = 2; a < 100; a++, b++)
{
statement;
}
逗號運算符:從左到右執(zhí)行
6墅垮、do while循環(huán)
do
{
statement;
} while (boolean)
7、數(shù)組
type arrayName[size];
數(shù)組元素編號從0開始耕漱,直到size-1
char數(shù)組算色,并且存在的最后一個元素是 \0 ,則該數(shù)組是字符串
C90, c99:
int m = 3, n = 4;
int arr1[m], arr[n]; c90不允許螟够,c99允許
初始化:type arrayName[size] = {值列表};//當(dāng)數(shù)值數(shù)目少于數(shù)組元素數(shù)目時剃允,多余的數(shù)組元素被初始化為默認值
const type arrayName[size] = {值列表};//定義只讀數(shù)組
變量和數(shù)組元素未初始化的數(shù)值是不確定的
指定項目初始化:
int arr[6] = {[5] = 212};//C99 把arr[5]初始化為212
指定項目初始化注意事項:
int day[12] = {31, 28, [4] = 31, 30, 31, [1] = 29};
各元素的值: 0->31, 1->29, 2->0, 3->0, 4->31, 5->30, 6->31, 7->0, 8->0, 9->0, 10->0, 11->0
數(shù)組和指針:
arr[3]恒等于
(arr + 3)
&arr[3]等于arr + 3
變長數(shù)組:
并不表示在創(chuàng)建數(shù)組后,可以修改其大小。變長數(shù)組的大小在創(chuàng)建后就是保持不變的斥废,“變”的意思是說其維大小可以用變量來指定
int sum2d(int rows, int cols, int ar[rows][cols]);
int sum2d(int, int, int ar[][]);//C99
8、if語句
if (expression)
{
statement;
}

    if (expression)
    {
        statement;
    }
    else //else與最近的if配對
    {
        statement;
    }
9给郊、getchar(), putchar();
    char ch = getchar();//接收一個字符
    putchar(ch);//輸出一個字符
10牡肉、ctype.h  系列字符函數(shù)
    isalnum() 字母或數(shù)字
    isalpha() 字母
    isblank() 空白字符(空格、水平制表符淆九、換行)
    iscntrl() 控制符
    isdigit() 阿拉伯?dāng)?shù)字
    isgraph() 除空格以外的字符
    islower() 小寫字母
    isprint() 可打印字符 
    ispunct() 標(biāo)點符號
    isspace() 空白字符:空格统锤、換行、走紙炭庙、回車饲窿、垂直制表符、水平制表符
    isuper() 大寫字母
    isxdigit() 十六進制數(shù)字字符
    tolower() 返回小寫字符
    toupper() 返回大寫字符
14焕蹄、邏輯運算符
    &&, ||, ! 具有短路性
    #include <iso646.h> 后逾雄,可以使用 and, or, not
15、stdbool.h
    提供bool腻脏,true鸦泳,false的定義,使用布爾類型時需要include
16永品、條件運算符
    expression ? if-true-expression : if-false-expression;
17做鹰、循環(huán)輔助語句 continue, break
    continue:
        (1)忽略剩余代碼,進行下一次迭代
        (2)位于嵌套結(jié)構(gòu)中鼎姐,忽略里層循環(huán)
    break:
        終止循環(huán)
18钾麸、switch語句
    switch(expression)
    {
        case exp1:
            statement;
            break;  //如果沒有break會往下執(zhí)行
        default:
            statement;
            break;
    }
19、goto語句
    (1)定義標(biāo)簽
        標(biāo)簽名:
    (2)跳轉(zhuǎn)
        goto 標(biāo)簽名;
20炕桨、緩沖分類
    完全緩沖I/O, 行緩沖I/O
    對于完全緩沖輸入來說饭尝,緩沖區(qū)滿時被清空(內(nèi)容被發(fā)送至其目的地),這種類型的緩沖通常出現(xiàn)在文件輸入中谋作,緩沖區(qū)的大小取決于系統(tǒng)芋肠,但512字節(jié)和4096字節(jié)是常見的值
    對于行緩沖I/O來說,遇到一個換行字符時將被清空緩沖區(qū)遵蚜,鍵盤輸入是標(biāo)準(zhǔn)的行緩沖帖池,按下回車鍵將清空緩沖區(qū)
21、file_efo.c
    #include <stdio.h>
    #include <stdlib.h> //為了使用exit()
    int main()
    {
        int ch;
        FILE *fp;
        char fname[50];
        printf("Enter the name of the file:");
        scanf("%s", fname);
        fp = fopen(fname, "r");
        if(fp == NULL)
        {
            printf("Failed to open file. Bye\n");
            exit(1);
        }
        while((ch = getc(fp) != EOF)
        {
            putchar(ch);
        }
        fclose(fp);
        return 0;
    }
22吭净、函數(shù)
    返回值類型 函數(shù)名(類型 參數(shù)名, 類型 參數(shù)名)
    {
        
    }
    void fuc();//不會進行參數(shù)檢查
    void fuc2(void);//表明該函數(shù)確實不使用參數(shù)睡汹,編譯器就會檢查確實有沒有使用參數(shù)
    遞歸:
        調(diào)用自己的函數(shù)稱為遞歸
        遞歸函數(shù)必須在某一條件下返回確定的值,否則產(chǎn)生無限調(diào)用
    對形參使用const修飾符寂殉,編譯器會把形參當(dāng)作常量來對待囚巴,無法修改
23、地址運算符 &
24、取值運算符 * 也叫間接運算符
    聲明一個指針: 類型 * 指針名
    指針可以作為函數(shù)的參數(shù)
    取指針地址——指針變量同其他變量一樣具有地址和數(shù)值彤叉,使用運算符&可以的餓到存儲指針本身的地址
    常量或非常量數(shù)據(jù)的地址賦給指向常量的指針是合法
    只有非長臉該數(shù)據(jù)的指針才可以賦給普通的指針
    const int * pc;//指向常量int類型的指針庶柿,指針可改,數(shù)據(jù)不可改
    int * const pc2;//常量指針秽浇,指針不可改浮庐,數(shù)據(jù)可改
    const int * const pc3;//指針不可改,常量不可改
    定義指向多維數(shù)組的指針: int (* pz)[2];//pz指向一個包含2個int值的數(shù)組
    指針之間的賦值規(guī)則比數(shù)值類型的賦值更加嚴格柬焕,類型不同就不行
25审残、復(fù)合文字
    創(chuàng)建一個包含兩個int值的無名稱數(shù)組:
        (int [2]) {10, 20}
        (int []) {10, 20, 30}
26、字符串I/O
    gets(字符串?dāng)?shù)組名):最后一個元素是\0,返回獲取的字符串的地址斑举,如果出錯或gets()遇到文件結(jié)尾搅轿,返回一個空地址
    puts(字符串|字符串?dāng)?shù)組);
    字符串?dāng)?shù)組初始化:
        (1)char array1[size] = "this is a string.";
        (2)char array2[size] = {'t', 'h', 'i', 's', 'i', 's', 'a', 's','\0'};//這種方式最后一個元素必須是\0,多余的數(shù)組會被初始化為\0
    區(qū)別:
        char heart[] = "I love";//不能用于++, --
        char *head = "I like";//可用于++, --
        主要區(qū)別在于數(shù)組名heart是個常量,而指針head則是個變量
        head = heart;//合法
        heart = head;//非法
    fges()函數(shù):多用于文件讀取
        (1)第二個參數(shù)來說明最大讀入字符數(shù),如果這個參數(shù)值為n,fgets()就會讀取最多n-1個字符或者讀完一個換行符為止
        (2)如果fgets()讀取到換行符业舍,就會把它存到字符串里,而不是想gets()那樣丟棄它
        (3)第三個參數(shù)來說明讀哪一個文件沸柔。使用stdin作為參數(shù),從鍵盤上讀數(shù)據(jù)
    scanf(), gets():
        scanf更基于獲取單詞而不是獲取字符串铲敛,gets函數(shù)會讀取所有的字符褐澎,直到遇到第一個換行符為止
    puts(地址參數(shù)):參數(shù)是一個地址
        顯示字符串時自動在其后添加一個換行符,直到遇到空白字符\0
    fputs()函數(shù):多用于文件讀取
        第二個參數(shù)說明要寫的文件伐蒋,使用stdout作為參數(shù)來進行輸出顯示
        fputs()并不為輸出自動添加換行符
27工三、字符串函數(shù) string.h 
    strlen()函數(shù):返回字符串的長度
    strcat()函數(shù):兩個參數(shù)為char * 類型,將第二個參數(shù)附加到第一個參數(shù)后面
    strncat()函數(shù):三個參數(shù)先鱼,第三個指定第二個參數(shù)添加到第一個參數(shù)的長度俭正,當(dāng)加到足夠字符或遇到空字符時停止
    strcmp()函數(shù):兩個字符串參數(shù),a1>a2返回1焙畔,a1=a2返回0掸读,a1<a2返回-1
    strncmp(a1, a2, int)函數(shù):第三個參數(shù)指定a1, a2比較的字符串長度
    strcpy(a1, a2)函數(shù):把a2的內(nèi)容復(fù)制到a1,要保證a1的控件足夠大容納宏多,返回第一個參數(shù)的字符的地址儿惫,第一個參數(shù)可以使數(shù)組中的中間的一部分
    聲明一個數(shù)組將為數(shù)據(jù)分配存儲控件,而聲明一個指針只為一個地址分配存儲空間
    strncpy(a1, a2, length):第三個函數(shù)指明最大可復(fù)制的字符數(shù)伸但,如果a2比length大肾请,則沒有添加空字符,因此需要設(shè)置n為目標(biāo)數(shù)組大小減1更胖,然后將最后一個數(shù)組元素賦值為'\0'
    sprintf(存儲, 轉(zhuǎn)換說明字符, 項目列表)函數(shù):跟printf類似铛铁,將結(jié)果存儲到存儲地址里
    
    常用:
        char *strcpy(char * s1, const char * s2);
            把s2指向的字符串(包括空字符)復(fù)制到s1指向的位置隔显,返回值是s1
        char *strncpy(char * s1, const char * s2, size_t n);
            把s2指向的字符復(fù)制到s1指向的位置,復(fù)制的字符數(shù)不超過n個饵逐,返回值是s1.空字符后的字符不被賦值括眠,如果原字符串的字符數(shù)少于n個,在字符串中就以空字符填充倍权。如果源字符串的字符數(shù)大于或等于n個哺窄,空字符就不被賦值,返回值是s1
        char *strcat(char * s1, const char * s2);
            s2指向的字符串被復(fù)制到s1指向字符串的結(jié)尾账锹,復(fù)制過來的s2所指字符串的第一個字符覆蓋了s1所指字符結(jié)尾的空字符,返回值是s1
        char *strncat(char * s1, const char * s2, size_t n);
            s2字符串中只有前n個字符被追加到s1字符串坷襟,復(fù)制過來的s2所指字符串的第一個字符覆蓋了s1所指字符結(jié)尾的空字符奸柬,s2字符穿中的空字符及其后的任何字符都不會被賦值,并且追加一個空字符到所得結(jié)果后面婴程,返回值是s1
        int strcmp(const char * s1, const char * s2);
            如果s1字符串在機器編碼順序中落后于s2字符廓奕,函數(shù)的返回值是一個整數(shù);如果兩個字符串相同档叔,返回值是0桌粉;如果第一個字符串在機器編碼順序中先于第二個字符串,返回值是一個負數(shù)
        int strncmp(const char * s1, const char * s2, size_t n);
            函數(shù)的作用和strcmp()一樣衙四,只是比較n個字符后或者遇到第一個空白字符時會停止比較铃肯,由二者中最先被滿足的那一個條件終止比較過程
        char * strpbrk(const char * s1, const char * s2);
            返回一個指針,指向字符串s1中存放s2字符中的任何字符的第一個位置传蹈,如果沒有找到任何字符押逼,返回空指針
        char *strrchr(const char * s, int c)
            返回一個指針,指向字符串s中字符c最后一次出現(xiàn)的地方(標(biāo)志結(jié)束的空字符是字符串的一部分惦界,因此也可以搜索到它)挑格,如果沒找到該字符,函數(shù)就返回空指針
        char *strstr(const char * s1, const char * s2)
            返回一個指針沾歪,指向s1字符串中第一次出現(xiàn)s2字符串的地方漂彤,如果在s1中沒找到s2字符串,函數(shù)就返回空指針
        size_t strlen(const char * s)
            返回s字符串中的字符個數(shù)灾搏,其中布包裹標(biāo)志結(jié)束的空字符
        char *strcpy(char * s1, const char * s2)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挫望,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子确镊,更是在濱河造成了極大的恐慌士骤,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕾域,死亡現(xiàn)場離奇詭異拷肌,居然都是意外死亡到旦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門巨缘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來添忘,“玉大人,你說我怎么就攤上這事若锁「槠铮” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵又固,是天一觀的道長仲器。 經(jīng)常有香客問我,道長仰冠,這世上最難降的妖魔是什么乏冀? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮洋只,結(jié)果婚禮上辆沦,老公的妹妹穿的比我還像新娘。我一直安慰自己识虚,他們只是感情好肢扯,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著担锤,像睡著了一般蔚晨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妻献,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天蛛株,我揣著相機與錄音,去河邊找鬼育拨。 笑死谨履,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熬丧。 我是一名探鬼主播笋粟,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼析蝴!你這毒婦竟也來了害捕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤闷畸,失蹤者是張志新(化名)和其女友劉穎尝盼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佑菩,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡盾沫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年裁赠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赴精。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡佩捞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蕾哟,到底是詐尸還是另有隱情一忱,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布谭确,位于F島的核電站帘营,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏逐哈。R本人自食惡果不足惜仪吧,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鞠眉。 院中可真熱鬧,春花似錦择诈、人聲如沸械蹋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哗戈。三九已至,卻和暖如春荷科,著一層夾襖步出監(jiān)牢的瞬間唯咬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工畏浆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胆胰,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓刻获,卻偏偏與公主長得像蜀涨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蝎毡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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