日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重学C语言_数据结构与基础语法

發(fā)布時間:2025/1/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重学C语言_数据结构与基础语法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

c語言標(biāo)準(zhǔn)

2011年12月8日,國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC) 旗下的C語言標(biāo)準(zhǔn)委員會(ISO/IEC JTC1/SC22/WG14)正式發(fā)布了C11標(biāo)準(zhǔn)。

C11標(biāo)準(zhǔn)是C語言標(biāo)準(zhǔn)的第三版,前一個標(biāo)準(zhǔn)版本是C99標(biāo)準(zhǔn)。

目前程序設(shè)計(jì)學(xué)習(xí)使用最多的標(biāo)準(zhǔn)是C99,它是1999年發(fā)布的。

環(huán)境安裝

要想運(yùn)行C語言程序,電腦里面必須得有GCC,也就是C語言的編譯器。

  • 驗(yàn)證有沒有g(shù)cc
  • cmd里面敲gcc -v

Windows 上的安裝

為了在 Windows 上安裝 GCC,您需要安裝 MinGW。為了安裝 MinGW,請?jiān)L問 MinGW 的主頁 www.mingw.org,進(jìn)入 MinGW 下載頁面,下載最新版本的 MinGW 安裝程序,命名格式為 MinGW-.exe。

  • 訪問官網(wǎng)
  • http://www.mingw.org/
  • 點(diǎn)擊download

  • 點(diǎn)擊logo

  • 點(diǎn)擊logo進(jìn)行下載
  • 添加到環(huán)境變量
  • 當(dāng)然,你也可以使用IDE里面自帶的編譯器,一般codeblocks等編輯器都自帶MinGW。

    Hello world!

    #include <stdio.h> int main() {/* 我的第一個 C 程序 文件名 hello.c */printf("Hello, World! \n");return 0; }

    編譯運(yùn)行這一段代碼。

    gcc hello.c

    它會自動生成一個a.exe文件 (LINUX平臺為 a.out)

    通過 ./a.exe 就可以執(zhí)行。

    注釋

    // 單行注釋 /** 多行注釋*/

    標(biāo)識符

    用來標(biāo)識變量、函數(shù)。

    • 由字母、數(shù)字、下劃線組成
    • 數(shù)字不能打頭陣
    • 不能出現(xiàn)特殊符號($、@ 不能出現(xiàn))
    • 區(qū)分大小寫

    C數(shù)據(jù)類型

    整數(shù)類型

    char、int、short、long、long long都是整數(shù)類型

    他們都可以有unsigned的前綴。(unsigned 無符號)

    char 的值范圍 -128到127 (-128的二進(jìn)制 10000000)

    unsigned char 的值范圍是 0 到 255

    浮點(diǎn)數(shù)類型

    double 和 float

    定義常量

    在 C 中,有兩種簡單的定義常量的方式:

  • 使用 #define 預(yù)處理器。
  • 使用 const 關(guān)鍵字。
  • #define identifier value or const type variable = value; // const int

    C語言修飾符

    auto

    所有局部變量的默認(rèn)值

    {int variable;等價(jià)于auto int variable; }

    static

    可以修飾局部變量 和 全局變量。

    c 語言中,把變量定義在 大括號外面就是全局變量。

    static int count = 10; 等價(jià)于 int count = 10;void main(){// do something }

    extern

    extern 存儲類用于提供一個全局變量的引用,全局變量對所有的程序文件都是可見的。當(dāng)您使用 extern 時,對于無法初始化的變量,會把變量名指向一個之前定義過的存儲位置。

    詳細(xì)見菜鳥教程

    c - if 判斷

    定義:C 語言把任何非零非空的值假定為 true,把null 假定為 false。

    C - 循環(huán)

    • 有while,for,do while循環(huán)

    • break 結(jié)束循環(huán)

    • continue 停止本次循環(huán),執(zhí)行下一步

    C - 函數(shù)

    語法:

    return_type function_name( parameter list ) {body of the function }
    • **返回類型:**一個函數(shù)可以返回一個值。return_type 是函數(shù)返回的值的數(shù)據(jù)類型。有些函數(shù)執(zhí)行所需的操作而不返回值,在這種情況下,return_type 是關(guān)鍵字 void。
    • **函數(shù)名稱:**這是函數(shù)的實(shí)際名稱。函數(shù)名和參數(shù)列表一起構(gòu)成了函數(shù)簽名。
    • **參數(shù):**參數(shù)就像是占位符。當(dāng)函數(shù)被調(diào)用時,您向參數(shù)傳遞一個值,這個值被稱為實(shí)際參數(shù)。參數(shù)列表包括函數(shù)參數(shù)的類型、順序、數(shù)量。參數(shù)是可選的,也就是說,函數(shù)可能不包含參數(shù)。
    • **函數(shù)主體:**函數(shù)主體包含一組定義函數(shù)執(zhí)行任務(wù)的語句。

    函數(shù)參數(shù)

    如果函數(shù)要使用參數(shù),則必須聲明接受參數(shù)值的變量。這些變量稱為函數(shù)的形式參數(shù)

    形式參數(shù)就像函數(shù)內(nèi)的其他局部變量,在進(jìn)入函數(shù)時被創(chuàng)建,退出函數(shù)時被銷毀。

    函數(shù)參數(shù):

    • 傳值 (不會修改原來的值)
    • 傳地址

    函數(shù)聲明:

    • 如果調(diào)用外部函數(shù),必須得提前聲明
    • 如果main在調(diào)用的函數(shù)前面,必須得提前聲明

    函數(shù)的形參名不重要,所以函數(shù)聲明時可以忽略。

    #include <stdio.h> #include <stdlib.h> int sum(int,int); // int sum(int a,int b); // 這兩種都可以int main() {int x=3,y=5;printf("%d",sum(x,y));return 0; }int sum(int a,int b){return a+b; }

    當(dāng)形參和全局變量同名的時候,形參的值在函數(shù)體內(nèi)部會覆蓋掉全局變量。

    傳遞數(shù)組給函數(shù)作為參數(shù)

    方式 1

    形式參數(shù)是一個指針:

    void myFunction(int *param) { . . . }

    方式 2

    形式參數(shù)是一個已定義大小的數(shù)組:

    void myFunction(int param[10]) { . . . }

    方式 3

    形式參數(shù)是一個未定義大小的數(shù)組:

    void myFunction(int param[]) { . . . }

    建議采用方式1或者3

    數(shù)組作為函數(shù)的返回值

    C 語言不允許返回一個完整的數(shù)組作為函數(shù)的參數(shù)。

    但是,您可以通過指定不帶索引的數(shù)組名來返回一個指向數(shù)組的指針。

    // int[] getArr() //這種語法是錯誤的int * getArr( ) {static int r[10] = {1,2,3};; // 必須使用static來修飾,否則報(bào)錯return r; }

    初始化局部變量和全局變量

    當(dāng)局部變量被定義時,系統(tǒng)不會對其初始化,您必須自行對其初始化。定義全局變量時,系統(tǒng)會自動對其初始化,如下所示:

    數(shù)據(jù)類型初始化默認(rèn)值
    int0
    char‘\0’
    float0
    double0
    pointerNULL

    正確地初始化變量是一個良好的編程習(xí)慣,否則有時候程序可能會產(chǎn)生意想不到的結(jié)果,因?yàn)槲闯跏蓟淖兞繒?dǎo)致一些在內(nèi)存位置中已經(jīng)可用的垃圾值。

    作用域

    • 全局變量
    • 局部變量
    • 形式參數(shù)

    c語言中是塊級作用域,即變量只服務(wù)于大括號內(nèi)部。

    {int a; // 外面訪問不到這個 }

    函數(shù)體定義的形參等價(jià)于函數(shù)體內(nèi)部定義的局部變量。

    void func(int x){// 等價(jià)于函數(shù)體里面寫 int x; }

    當(dāng)局部變量和全局變量重名的時候,優(yōu)先獲取的是局部變量的值。

    C - 數(shù)組

    定義: 數(shù)組是用來存儲一系列數(shù)據(jù),它是一系列相同類型的變量。

    語法:type arrayName [ arraySize ];

    初始化數(shù)組

    在 C 中,您可以逐個初始化數(shù)組,也可以使用一個初始化語句,如下所示:

    double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

    大括號 { } 之間的值的數(shù)目不能大于我們在數(shù)組聲明時在方括號 [ ] 中指定的元素?cái)?shù)目。

    如果您省略掉了數(shù)組的大小,數(shù)組的大小則為初始化時元素的個數(shù)。因此,如果:

    double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

    如果您只賦值,其中一部分,那么剩余的值將采用默認(rèn)值。

    int arr[5] = {1,2,3}; // [1,2,3,0,0] int的默認(rèn)值是0

    獲取數(shù)組的Length

    int arr[5] = {1,2,3}; int len = sizeof(arr) / sizeof(arr[0]); // 5

    使用size運(yùn)算符通過計(jì)算就可以獲得數(shù)組的長度,但是這還是很不方便。

    可以進(jìn)一步使用宏定義。

    #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} int main (){int arr[5] = {1,2,3};int len;GET_ARRAY_LEN(arr,len); // 此時len = 5 }

    千萬不要把sizeof(arr) / sizeof(arr[0])封裝到函數(shù)里面,你獲取的長度將永遠(yuǎn)是1。

    深坑,請勿踩雷!~

    二維數(shù)組

    多維數(shù)組最簡單的形式是二維數(shù)組。一個二維數(shù)組,在本質(zhì)上,是一個一維數(shù)組的列表。聲明一個 x 行 y 列的二維整型數(shù)組,形式如下:

    type arrayName [ x ][ y ];

    其中,type 可以是任意有效的 C 數(shù)據(jù)類型,arrayName 是一個有效的 C 標(biāo)識符。一個二維數(shù)組可以被認(rèn)為是一個帶有 x 行和 y 列的表格。下面是一個二維數(shù)組,包含 3 行和 4 列:

    int x[3][4];

    因此,數(shù)組中的每個元素是使用形式為 a[ i , j ] 的元素名稱來標(biāo)識的,其中 a 是數(shù)組名稱,i 和 j 是唯一標(biāo)識 a 中每個元素的下標(biāo)。

    初始化二維數(shù)組

    多維數(shù)組可以通過在括號內(nèi)為每行指定值來進(jìn)行初始化。下面是一個帶有 3 行 4 列的數(shù)組。

    int a[3][4] = { {0, 1, 2, 3} , /* 初始化索引號為 0 的行 */{4, 5, 6, 7} , /* 初始化索引號為 1 的行 */{8, 9, 10, 11} /* 初始化索引號為 2 的行 */ };

    內(nèi)部嵌套的括號是可選的,下面的初始化與上面是等同的:

    int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};

    訪問二維數(shù)組元素

    二維數(shù)組中的元素是通過使用下標(biāo)(即數(shù)組的行索引和列索引)來訪問的。例如:

    int val = a[2][3];

    C - 枚舉

    語法:enum 枚舉名 {枚舉元素1,枚舉元素2,……};

    enum DAY {MON=1, TUE, WED, THU, FRI, SAT, SUN };

    這樣看起來是不是更簡潔了。

    **注意:**第一個枚舉成員的默認(rèn)值為整型的 0,后續(xù)枚舉成員的值在前一個成員上加 1。我們在這個實(shí)例中把第一個枚舉成員的值定義為 1,第二個就為 2,以此類推。

    可以在定義枚舉類型時改變枚舉元素的值:

    enum season {spring, summer=3, autumn, winter};

    沒有指定值的枚舉元素,其值為前一元素加 1。也就說 spring 的值為 0,summer 的值為 3,autumn 的值為 4,winter 的值為 5

    枚舉變量的定義 - 實(shí)例化

    前面我們只是聲明了枚舉類型,接下來我們看看如何定義枚舉變量。

    我們可以通過以下三種方式來定義枚舉變量

    1、先定義枚舉類型,再定義枚舉變量

    enum DAY {MON=1, TUE, WED, THU, FRI, SAT, SUN }; enum DAY day;

    2、定義枚舉類型的同時定義枚舉變量

    enum DAY {MON=1, TUE, WED, THU, FRI, SAT, SUN } day;

    3、省略枚舉名稱,直接定義枚舉變量

    enum {MON=1, TUE, WED, THU, FRI, SAT, SUN } day;

    C - 指針

    定義:指針是一個變量,其值為另一個變量的地址。

    語法: type * variable

    備注:這個*是聲明指針運(yùn)算符,不是乘號,更不是對地址取值

    #include <stdio.h>int main () {int var = 20; /* 實(shí)際變量的聲明 */int *ip; /* 指針變量的聲明 */ip = &var; /* 在指針變量中存儲 var 的地址 */printf("var 變量的地址: %p\n", &var );/* 在指針變量中存儲的地址 */printf("ip 變量存儲的地址: %p\n", ip );/* 使用指針訪問值 */printf("*ip 變量的值: %d\n", *ip );return 0; }

    空指針

    在變量聲明的時候,如果沒有確切的地址可以賦值,為指針變量賦一個 NULL 值是一個良好的編程習(xí)慣。

    #define NULL 0 // NULL 指針是一個定義在標(biāo)準(zhǔn)庫中的值為零的常量。

    實(shí)例:

    #include <stdio.h> int main () { int *ptr = NULL; printf("ptr 的地址是 %p\n", ptr ); return 0; }

    當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:

    ptr 的地址是 0x0

    取值和取地址運(yùn)算符

    // * 取值運(yùn)算符 // & 取地址運(yùn)算符int main() {int a = 1;int *p;p = &a;printf("%d",*p); // 1return 0; }

    總結(jié)

    以上是生活随笔為你收集整理的重学C语言_数据结构与基础语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。