欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

【C++筆記】1.C語言復(fù)習(xí)-創(chuàng)新互聯(lián)

1. C語言復(fù)習(xí) 1.1 基礎(chǔ)部分
  1. C99之后可以用const int來表示常量,初始化后不能再被賦值。

    10年積累的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有蓮湖免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
  2. 整數(shù)和整數(shù)運(yùn)算只會(huì)得到整數(shù)。當(dāng)有浮點(diǎn)數(shù)參與運(yùn)算的時(shí)候,就會(huì)變成浮點(diǎn)數(shù)。

  3. 整數(shù)用int(輸入輸出都是%d),浮點(diǎn)數(shù)double(輸入%lf,輸出%f)。

  4. 運(yùn)算符優(yōu)先級(jí):

    優(yōu)先級(jí)運(yùn)算符號(hào)運(yùn)算意義結(jié)合關(guān)系
    1+ -正、負(fù)自右向左
    2* / %乘、除、取余自左向右
    3+ -加、減自左向右
    4=賦值自右向左
  5. =賦值語句,也是運(yùn)算,也是有結(jié)果的。
    比如a=b=6在C語言中,自右向左運(yùn)算a=(b=6),意義是:b=6的結(jié)果是6,再賦給a
    雖然可以“嵌套式賦值”(比如int c = 1 + (b=a)),但不建議這么做。

  6. 調(diào)試運(yùn)行的時(shí)候,下一步和單步進(jìn)入,是有區(qū)別的。

  7. 復(fù)合賦值運(yùn)算符:+=-=*=/=

  8. 遞增遞減運(yùn)算符:++

    表達(dá)式運(yùn)算表達(dá)式的值
    count++給count加1count原來的值
    ++count給count加1count+1的值
    count- -給count減1count原來的值
    - -count給count減1count-1的值
  9. scanf("%d,%d")scanf("%d %d")scanf("%d, %d")scanf("%d %d\n")這四種方式是不同的。
    scanf()函數(shù)用于接收輸入進(jìn)來的東西,返回值是接收了幾個(gè)東西。
    對于空格和回車,會(huì)等待后續(xù)輸入。
    對于其他非%d數(shù)據(jù),scanf()函數(shù)接收失敗,返回成功接收的個(gè)數(shù),但會(huì)繼續(xù)執(zhí)行下一條語句。

  10. %x為16進(jìn)制的輸入或輸出,%o為8進(jìn)制的輸入或輸出。

  11. 取余運(yùn)算的應(yīng)用:number%10運(yùn)算可提取出number的個(gè)位數(shù)字。
    輾轉(zhuǎn)相除法、判斷素?cái)?shù)等,都用到了取余符號(hào)。

  12. 關(guān)系運(yùn)算(<、<=、>、>=、==、!=):自左向右運(yùn)算,且==!=的運(yùn)算級(jí)低。
    語句a==b==6,實(shí)際上就是判斷1==6,最終結(jié)果是0
    語句6>5>4,實(shí)際上就是判斷1>4,最終結(jié)果是0

  13. if語句中,if(條件){語句},注意分號(hào)和大括號(hào)。

  14. switch語句中,case只是入口。如果不break,語句會(huì)繼續(xù)執(zhí)行。

  15. do…while循環(huán),while括號(hào)里的都是循環(huán)的條件(雖和直覺不符。但和while循環(huán)保持了一致)。

  16. continuebreak的差別,continue跳出當(dāng)前循環(huán),break跳出整個(gè)循環(huán)。

  17. goto語句在多層循環(huán)嵌套時(shí)候使用,其他場合不建議使用。

  18. sizeof()函數(shù)是靜態(tài)函數(shù),比如sizeof(a++)語句編譯后,a++不執(zhí)行。

  19. &&與運(yùn)算會(huì)屏蔽0后的語句、||或運(yùn)算會(huì)屏蔽1后的語句。

  20. 補(bǔ)碼=反碼+1。

  21. 浮點(diǎn)數(shù)是有精度的。判斷兩個(gè)浮點(diǎn)數(shù)是否相等,應(yīng)采用fabs(f1-f2)<=1e-12

  22. char型變量其實(shí)是一種特殊的int類型:int a = 49和char c ='A'
    按照%d輸出時(shí),輸出的都是49
    按照%c輸出時(shí),輸出的都是'1'
    綜上,a+'a'-'A'a+'A'-'a'就可以進(jìn)行大小寫轉(zhuǎn)換。

  23. 逗號(hào)運(yùn)算符,,主要是用在for語句里用。

  24. C語言調(diào)用函數(shù)時(shí),是值傳遞。

  25. 本地變量、局部變量:定義在大括號(hào)(塊)里。
    生存期、作用域:大括號(hào)(塊)里。
    塊里定義的變量,塊外無效。
    塊外定義的便令,塊里也有效。
    如果塊里定義了與塊外同名變量,屏蔽掉塊外的變量。

  26. 同一個(gè)c文件里,函數(shù)聲明和定義的頭,必須一致,否則會(huì)編譯出錯(cuò)。

  27. f(a,b)f( (a,b) )不一樣,前者傳了2個(gè)參數(shù),后者傳了1個(gè)參數(shù)。

  28. 函數(shù)里面可以聲明另一個(gè)函數(shù),但不能定義另一個(gè)函數(shù)。

  29. C99之前,數(shù)組元素?cái)?shù)量必須是編譯時(shí)刻確定了的字面量。

  30. 數(shù)組一旦創(chuàng)建,長度固定。

  31. 數(shù)組創(chuàng)建后,最好要初始化。數(shù)組的訪問,不能越界(即超過大下標(biāo))。

  32. 數(shù)組的集成初始化:int a[]={1,2,3,4,5,6};
    int a[]={[1]=2,4,[5]=6};

  33. 數(shù)組長度算法:sizeof(a)/sizeof(a[0]);

  34. 數(shù)組變量不能互相賦值:int b[] = a;這種寫法是錯(cuò)誤的。只能遍歷數(shù)組,每個(gè)元素依次賦值。

  35. 數(shù)組作為參數(shù)傳入函數(shù)時(shí),應(yīng)把數(shù)組長度一同傳入。
    原因:數(shù)組作為參數(shù)時(shí),傳入的只是地址。

  36. unix系統(tǒng)下,可以使用man sqrt命令,查閱sqrt函數(shù)。

  37. 求素?cái)?shù)的方法:方法一 順序往下挑選、方法二 剔除已有素?cái)?shù)的倍數(shù)。

  38. 二維數(shù)組,列數(shù)不可以省略,行數(shù)可以。int a[][5] = {{1,2,3,4,5},{6,7,8,9,0}};

1.2 指針和數(shù)組
  1. 運(yùn)算符&:對變量取地址,不能是表達(dá)式,如&(i+p)或&(i++)等做法是錯(cuò)誤的。

  2. printf()函數(shù)里用%p來輸出地址。

  3. 對于一個(gè)數(shù)組a[]來說,a&a&a[0]都是相同的,都是a的首地址。

  4. 作為參數(shù)的指針,在函數(shù)里面可以通過這個(gè)指針訪問外面這個(gè)i
    如果只是傳值,那么調(diào)用的函數(shù)無法改變外面的i
    但是傳了i的地址,那么就能對地址里面的東西進(jìn)行改動(dòng),也就是把i進(jìn)行改動(dòng)。

  5. 賦值號(hào)的左邊不一定是個(gè)變量,也有可能是個(gè)運(yùn)算表達(dá)式的結(jié)果,這就叫左值。
    *p就是p取內(nèi)容的運(yùn)算,但是可以被賦值,所以*p是左值。
    a[0]就是a取0位置內(nèi)容的運(yùn)算,但是可以被賦值,所以a[0]是左值。

  6. 指針的應(yīng)用,使得被調(diào)用的函數(shù)能夠更改原來函數(shù)的變量!

  7. 一般情況下,函數(shù)使用return返回運(yùn)行狀態(tài),使用指針返回值。

  8. 指針必須進(jìn)行初始化,即指向某個(gè)變量的地址。否則將會(huì)是一個(gè)“野指針”,很危險(xiǎn)。

  9. 傳數(shù)組,實(shí)際上就是在傳地址。所以說,被調(diào)用的函數(shù)可以改外部函數(shù)的數(shù)組元素!
    sizeof(a)在內(nèi)外卻不等,因?yàn)橥饷娴?code>sizeof(a)求的是整個(gè)數(shù)組地址所占長度,里面的sizeof(a)求的是首地址的長度。

  10. 數(shù)組變量本身表達(dá)地址,因此int *p = a;無需用&來取地址。
    數(shù)組名就是地址指針,因此a等價(jià)于&a[0]
    []運(yùn)算符可以對數(shù)組做,也可以對指針做:p[0]等價(jià)于a[0]
    *運(yùn)算符也可以對數(shù)組做:*a

  11. 實(shí)質(zhì):數(shù)組就是常量指針,所以不能被賦值。
    int a[]等價(jià)于int * const a

  12. 指針與const

    int i;
    const int* p1 = &i;   // *p1是const,即不能通過*p1修改i
    int const* p2 = &i;   // *p2是const,即不能通過*p2修改i
    int *const p3 = &i;   //  p3是const,即p3只能指向i,等價(jià)于數(shù)組
  13. void f(const int* x);,表示f()不會(huì)改動(dòng)傳來的指針的指向的值。

  14. const數(shù)組:const int a[]={1,2,3,4,5,6,},這樣的話,內(nèi)部的函數(shù)不會(huì)修改外部數(shù)組了。

  15. 指針pq可以遞增/遞減,即進(jìn)行p++p--p-q運(yùn)算。
    p=p+1,實(shí)際上指的是,將p指到下一個(gè)單元。
    而數(shù)組實(shí)際上就是特殊的指針,因此:
    *p等價(jià)于a[0]
    *(p+1)等價(jià)于a[1]

  16. *p++:取出p的東西,順便把指針向后移動(dòng)一次。舉例:

    for( int i=0; i< sizeof(a)/sizeof(a[0]) ; i++ ){printf("%d\n",a[i]);
    }
    // 可以改寫成:
    char *p = a[];
    while( *p != -1 ){printf("%d\n", *p++);
    }
  17. 指針是可以比較的,比如數(shù)組中的單元的地址就是線性遞增的。

  18. 不建議使用0地址,但可以初始化為NULL

  19. 類型不同的指針不能互相賦值。除非進(jìn)行強(qiáng)制類型轉(zhuǎn)換。

  20. void*表示不知道指向什么東西的指針。經(jīng)常在比較底層的情況下應(yīng)用到。

  21. 在C99之前(ANSI C)時(shí),如何用變量定義數(shù)組的大小呢?
    使用stdlib.h中的函數(shù)malloc()
    int *a = (int*) malloc(n*sizeof(int));
    原因:malloc()函數(shù)申請到的是一塊(void*)類型的地址空間,以字節(jié)為單位,需要強(qiáng)制類型轉(zhuǎn)化為(int*)
    接下來,把a當(dāng)作數(shù)組來用。如a[0]
    最后,用了malloc()就要釋放掉,即free(a)

  22. 但是系統(tǒng)空間是有限的,malloc()不一定總能成功的申請到需要的空間。
    malloc()返回值為1代表申請成功,返回值為0代表申請失敗。

  23. free()函數(shù)只能釋放掉malloc()來的地址。
    常見問題:
    (1)malloc了沒free,會(huì)導(dǎo)致運(yùn)行內(nèi)存逐漸下降。
    (2)free過了再去free。
    (3)地址變了,直接去free。

1.3 字符串
  1. 字符串以'\0'結(jié)束,但它不是字符串的一部分。計(jì)算這個(gè)字符串長度的時(shí)候不包括這個(gè)'\0'

  2. 字符串以數(shù)組形式存在,以指針形式訪問。
    因此,可以通過遍歷數(shù)組的方式來遍歷字符串。

  3. 對字符串進(jìn)行操作時(shí),需要#include

  4. 字符串的定義形式:
    由雙引號(hào)括起來的東西Hello,叫字符串的字面量.
    字符數(shù)組長度為6,因?yàn)榻Y(jié)尾還有'\0'

    char *str = "Hello";
    char word[] = "Hello";
    char line[10] = "Hello";
  5. char *s = "Hello, world!"中:
    這種寫法,會(huì)把"Hello, world!"寫在常量空間里,實(shí)際上sconst char *s,不允許寫入操作,賦值只能靠初始化。
    s是個(gè)指針,初始化為指向一個(gè)字符串常量。
    試圖對s所指的字符串做寫入會(huì)導(dǎo)致嚴(yán)重后果。

  6. char s[] = "Hello, world!"中:
    這種寫法,會(huì)把"Hello, world!"寫在變量空間里。
    在程序運(yùn)行結(jié)束后,會(huì)被自動(dòng)回收。

  7. 這兩種寫法如何選擇?
    數(shù)組形式:作為本地變量,空間自動(dòng)回收。
    指針形式:只讀、處理參數(shù)、動(dòng)態(tài)分配空間。
    如果要處理一個(gè)字符串,用數(shù)組。
    如果要構(gòu)造一個(gè)字符串,用指針。

  8. char*不一定是字符串,它本意是“指向char型單個(gè)變量的指針”。

  9. 符串賦值,實(shí)質(zhì)上是讓指針s指向了指針t所指的字符串,任何對s的操作就是對t做的,因?yàn)閷τ谧址x值符號(hào)賦的是地址。

    char *t = "Hello";
    char *s;
    s = t;
  10. 使用scanf()來讀字符串時(shí),讀到空格、tab、回車為止。
    scanf("%7s",string);表示讀入字符串最多7位。

  11. 常見錯(cuò)誤:

    char * string;
    scanf("%s", string);
    // 指針string很有可能指向了一個(gè)危險(xiǎn)的地方。
    // 改正方法:
    // 1. 賦初值,但以后無法更改
    // 2. 數(shù)組形式定義字符串變量
    char buffer[100] = "";
    // 這是一個(gè)空字符串,buffer[0]=='\0'
    char buffer[] = "";
    // 這個(gè)數(shù)組長度只有1,放不下任何東西
  12. char **achar a[][10]char *a[],這三者是不同的。
    char **a:表示a是一個(gè)指針,指向另一個(gè)指針,那個(gè)指針指向一個(gè)字符(串)
    char a[][10]:表示a是一個(gè)二維數(shù)組變量,每一個(gè)元素都是一個(gè)含有10個(gè)元素的一維數(shù)組。
    char *a[]:表示a是一個(gè)存放指針的一維數(shù)組,每個(gè)指針都指向一個(gè)char型變量。

  13. main(int argc, char const *argv[])
    這里的*argv[]表示:main()函數(shù)調(diào)用的參數(shù)。
    常常在命令行中使用到。

  14. int putchar(int c)函數(shù):返回寫了幾個(gè)字符,EOF(-1)表示寫失敗。

  15. int getchar(void)函數(shù):返回類型是int,是為了返回EOF(-1)

  16. windows環(huán)境下Ctrl+Z表示輸入結(jié)束;Unix環(huán)境下Ctrl+D表示輸入結(jié)束。

  17. 通過下面的例子,可以感受到 shell 的存在和工作機(jī)制。
    輸入設(shè)備和用戶程序之間有緩沖區(qū),這個(gè)緩沖區(qū)會(huì)在不同編譯環(huán)境下有不同的工作機(jī)制。
    另外,搭建 VScode的 C++ 開發(fā)環(huán)境時(shí),win 下使用 powershell 作為終端,ubuntu下默認(rèn)的終端。
    這二者對于cout函數(shù)的處理是不一樣的。
    前者cout輸出不一定要有endl,后者cout輸出一定要有endl才會(huì)輸出。

    int main( int argc, char const *argv[])
    {int ch;
        while ( ( ch = getchar() ) != EOF ){putchar( ch ) ;
        }
        printf("EOF\n");
        return 0;
        // getchar() 是用 int 型變量來接收 char。
        // putchar() 是把 int 型變量輸出為 char。
        // 這段代碼,輸入什么就輸出什么
        // 按下Ctrl+C會(huì)停止程序
        // 輸入Ctrl+Z會(huì)輸出EOF
    }
  18. 字符串頭文件string.h里常用的函數(shù):strlen()
    形式:size_t strlen(const char *s
    功能:返回s的字符串長度(不包括結(jié)尾的\0
    備注:一般情況下,等于sizeof()-1。

  19. 字符串頭文件string.h里常用的函數(shù):strcmp()
    形式:int strcmp(const char *s1, const char *s2)
    功能:比較兩個(gè)字符串并返回0、正數(shù)、負(fù)數(shù)。0表示相等,正數(shù)表示s1大,負(fù)數(shù)表示s2
    比較原則:從第一個(gè)字符開始比較,相同則繼續(xù),不同則相減。任一串讀完則跳出。
    備注:s1==s2是warning而非error,因?yàn)?code>s1==s2比較的是地址,而非字符串內(nèi)容。

  20. 字符串頭文件string.h里常用的函數(shù):strcpy()
    形式:char *strcpy(char *restrict dst, const char *restrict src):
    功能:把src的字符串拷貝到dst,并返回dst(最后的\0也拷貝)
    備注:restrict表示這兩個(gè)字符串在存儲(chǔ)上不能重疊。

  21. 復(fù)制字符串的套路:

    char *dst = (char*)malloc (strlen(src)+1);
    // 不能用sizeof,src還有可能是指針、數(shù)組
    // malloc后最后要free
    strcpy(dst,src);
  22. 字符串頭文件string.h里常用的函數(shù):strcat()
    形式:char *strcat(char *restrict s1, const char *restrict s2)
    功能:把s2拷貝到s1后面,接成一個(gè)長的字符串,返回s1
    原理:把s2的第一個(gè)char寫在s1\0的位置
    備注:s1必須有足夠的空間

  23. strcpy()strcat()的安全問題:如果目的地沒有足夠空間會(huì)產(chǎn)生安全問題。
    因此,盡量使用安全版本。
    char *strcpy(char *restrict dst, const char *restrict src, size_t n)
    char *strcat(char *restrict s1, const char *restrict s2, size_t n)
    int strcmp(const char *s1, const char *s2, size_t n)
    其中,strcmp()函數(shù)的n表示,只比較前n個(gè)字符。

  24. 字符串中找字符函數(shù)strchr(),分為從左和從右兩個(gè)版本。
    利用字符串找字符函數(shù),可以截取字符串中的某段。

  25. 字符串中找字符串函數(shù)strstr(),分為不忽略和忽略大小寫兩個(gè)版本。

1.4 枚舉
  1. 程序中如果有數(shù)字,盡量采用符號(hào)來表示,比如枚舉。
    enum COLOR {RED, YELLOW, BLUE, NumCOLOR};
    數(shù)據(jù)類型enum COLOR,實(shí)際上就是int,可以用%d進(jìn)行輸出。
    技巧:枚舉最后一個(gè)元素的值,實(shí)際上就是枚舉元素總數(shù)。
  2. 當(dāng)然,也可以不按順序進(jìn)行枚舉聲明,比如:
    enum COLOR {RED=1, YELLOW, BLUE=5};
1.5 結(jié)構(gòu)體
  1. 結(jié)構(gòu)體聲明、定義一個(gè)結(jié)構(gòu)體變量時(shí),最好放在main()函數(shù)外邊。
    結(jié)尾一定要記得寫分號(hào);

    // 方式一:先聲明,在定義。結(jié)構(gòu)體類型名:struct date。
    struct date{int month;
        int day;
    };
    struct date today, tommorow;
    
    // 方式二:直接定義。結(jié)構(gòu)體類型沒有名字。
    struct{int month;
        int day;
    } today, tommorow;
    
    //方式三:同時(shí)聲明和定義變量。結(jié)構(gòu)體類型名:struct date。
    struct date{int month;
        int day;
    } today, tommorow;
  2. 結(jié)構(gòu)變量的初始化:struct date today = {.month=4, .day=19}

  3. 結(jié)構(gòu)變量的訪問:today.month

  4. 結(jié)構(gòu)變量的賦值:
    方式一(成員分別賦值):
    today = (struct date){4, 19};
    方式二(變量整體賦值):
    today = tomorrow;

  5. 結(jié)構(gòu)變量的名字就是變量本身,并非地址(與數(shù)組和字符串不同)。
    因此對結(jié)構(gòu)變量取地址,&today
    當(dāng)然也可以對結(jié)構(gòu)變量的成員取地址,&today.month

  6. 結(jié)構(gòu)體是可以作為函數(shù)參數(shù)、返回值的。

  7. 結(jié)構(gòu)體不能直接printf和scanf,但可以自己做類似的函數(shù)。
    編寫時(shí),最好使用指針方式。

  8. 指向結(jié)構(gòu)體的指針,最好使用->

    struct date *ptoday = &today;
    (*ptoday).month = 12;
    ptoday->month = 12;
  9. 視頻11.2 結(jié)構(gòu)與函數(shù)在15分22秒處的例子,把結(jié)構(gòu)體指針做為參數(shù),又把結(jié)構(gòu)體指針作為函數(shù)返回值。因此各個(gè)函數(shù)之間可以互相調(diào)用、賦值。

  10. 結(jié)構(gòu)體中有數(shù)組:直接套就行了。
    數(shù)組中有結(jié)構(gòu)體:直接套就行了。
    結(jié)構(gòu)體中有結(jié)構(gòu)體:直接套就行了。
    但注意:成員是變量時(shí)用.,成員是指針時(shí)用->

1.6 自定義數(shù)據(jù)類型
  1. 普通的數(shù)據(jù)類型:typedef int Length;

  2. 定義結(jié)構(gòu)體:

    typedef struct ADate{int month;
        int day;
    } Date;
    // 或者省略`ADate`:
    typedef struct{int month;
        int day;
    } Date;
    // 定義變量時(shí),可以直接寫
    Date today = {4, 19};
1.7 聯(lián)合
  1. 表面上看起來和struct一樣,但實(shí)際上所有成員占用相同的內(nèi)存空間。
    如果發(fā)生重疊,會(huì)“沖掉”原來的值。

    union AnElt{int i;
        char c[4];
    } elt1;
    // 當(dāng)然此處也可以用typedef
    elt1.c[0] = 'a';
    elt1.i = 0xDEADBEEF;
    // 此時(shí),后填寫的`i`會(huì)把先填寫的`c`沖掉
  2. 本例中union的作用:查看int變量中每個(gè)字節(jié)的情況。
    當(dāng)然,x86的CPU采用小端形式進(jìn)行存儲(chǔ)數(shù)據(jù)。
    因此,如果對上邊的c數(shù)組進(jìn)行遍歷讀取的話,會(huì)得到:
    c[0]等于0xEF
    c[1]等于0xBE
    c[2]等于0xAD
    c[3]等于0xDE

1.8 全局變量
  1. 定義在函數(shù)外邊的變量,就是全局變量。

  2. 字符串__func__,輸出時(shí)自動(dòng)變?yōu)楫?dāng)前函數(shù)名。

    int main(){printf("%s", __func__);
        return 0;
    }
  3. 全局變量在沒有初始化時(shí),會(huì)得到0值(指針得到NULL)。

  4. 全局變量必須使用已知值來初始化。

  5. 不能將一個(gè)全局變量賦值給另一個(gè)全局變量。

  6. 本地變量會(huì)屏蔽外部的全局變量。

  7. 靜態(tài)本地變量,本質(zhì)上就是全局變量。
    原因:在程序進(jìn)行編譯時(shí),緊挨著放在放在同一塊區(qū)域中。
    static int i = 1;
    函數(shù)第二次被調(diào)用時(shí)會(huì)保留函數(shù)第一次執(zhí)行后的值。

  8. 總結(jié):
    本地變量:本地作用域,本地生存期。
    全局變量:全局作用域,全局生存期。
    靜態(tài)本地變量:本地作用域,全局生存期。

  9. 函數(shù)返回指針,不能返回本地變量的地址。

  10. 過多使用全局變量和靜態(tài)本地變量,在多線程時(shí)是不安全的。
    因此,應(yīng)盡量不要使用全局變量和靜態(tài)本地變量。

1.9 宏定義
  1. 編譯預(yù)處理指令:#開頭的那一行。
    它們不是C語言的部分,但C語言離不開它們。
  2. #define PI 3.14159,其中PI是宏的名字,3.14159是宏的值。
  3. #define:只是文本的替換,經(jīng)常需要加括號(hào)()
  4. #define:可以使用//進(jìn)行注釋。
  5. build的過程:源代碼文件(.c) ->中間結(jié)果文件(.i) ->匯編代碼文件(.s) ->目標(biāo)代碼文件(.o) ->可執(zhí)行文件(.out)
  6. #define:可以定義沒有值的宏。
  7. 預(yù)定義的宏:__DATE____TIME__等等。
  8. 帶參數(shù)的宏,原則:整體括號(hào),參數(shù)有括號(hào)。
    #define cube(x) ((x)*(x)*(x))
    #define MIN(a,b) ((a)>(b)?(b),(a))
  9. 宏定義中不建議加分號(hào);
  10. 帶參數(shù)的宏在大型程序中非常普遍。
  11. 宏的使用容易出錯(cuò)。
1.10 多文件項(xiàng)目
  1. 將各個(gè)函數(shù)分開放在不同的(.c)文件中。

  2. 編譯(compile):對單個(gè)源代碼文件的編譯。
    構(gòu)建(build):對整個(gè)項(xiàng)目做鏈接。

  3. 如果沒有頭文件(.h),編譯器遇到main()里陌生的函數(shù)會(huì)亂猜。
    因此,頭文件里包括了函數(shù)的聲明,用來作為不同源文件之間的橋梁。

  4. #include用來插入對應(yīng)的頭文件中的文本內(nèi)容。

  5. #include后的<>用于自帶頭文件,""用于用戶頭文件。

  6. 一般來說,任何c文件都有對應(yīng)的h文件。

  7. 頭文件中還包括了,在源文件中的全局變量的聲明。
    extern int AllVariable;

  8. 頭文件中,建議只放聲明。

  9. 同一個(gè)編譯單元里,同名的結(jié)構(gòu)不能被重復(fù)聲明。

  10. 因此,有標(biāo)準(zhǔn)頭文件結(jié)構(gòu)。

    #ifnedf _MAX_H_
    #define _MAX_H_
    
    #endif

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站題目:【C++筆記】1.C語言復(fù)習(xí)-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://chinadenli.net/article10/edddo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站域名注冊商城網(wǎng)站企業(yè)網(wǎng)站制作面包屑導(dǎo)航用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營