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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言+数据结构总结

發布時間:2025/3/11 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言+数据结构总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、C語言部分

1、數據類型:

Int 整形 4字節Short 短整形 2字節Long 長整形 4字節Float 單精度浮點型 4字節Double 雙精度浮點型 8字節Char 字符型 1字節

2、變量

  • 全局變量:作用于全局的變量。即生命周期為程序的開始到程序的結束。
  • 局部變量:作用于中指定區域的變量。main()函數中的局部變量生命周期等同于全局變量
  • 當全局變量與局部變量的變量名相同時,局部變量優先使用
  • 3、常用關鍵字

  • static:用static修飾的變量不會因函數的結束而被釋放。
  • break:結束整個循環,當循環多層嵌套時,運用break只能結束一層循環;跳出switch語句,如果不用break,在運行完當前case語句后繼續運行下一條case語句。
  • continue:結束本次循環,即本次循環中continue后的語句不執行。
  • sizeof:計算數據結構或類型所占空間大小。
  • 4、if…else語句:

    if(表達式) {語句a; } else {語句b; }

    如果表達式結果為真,則執行語句a,反之執行語句b。

    5、switch…case語句:

    switch(i) {case a:語句1;break; case b:語句2;break; case c:語句3;break; defluat:語句4break; }

    如果i等于a,則執行語句1,等于b時,執行語句2,如果沒有與i對應的case語句,就執行default語句。

    6、while循環:

    While(表達式) {循環體; }

    While循環先判斷表達式的結果真假,為真就執行循環體,直到條件表達式的結果為假時跳出循環。

    7、do…while循環:

    do {循環體; }while(表達式)

    無條件先執行循環體,在進行表達式結果真假性判斷。

    8、for循環

    for(表達式1;表達式2;表達式3) {循環體; }

    先執行表達式1,只執行一次,再進行表達式2真假性判斷,為真時執行循環體,接著執行表達式3,在對表達式2進行判斷,當表達式2為假時跳出for循環。

    9、goto語句:

    //跳轉標記: //語句段; //goto //跳轉標記;int c=0; scanf("%d",&c); aa:a=0;b=0;if(c>10)goto aa;

    當執行到goto語句時,跳轉到跳轉標記處,開始執行跳轉標記后的語句段。執行goto語句時無條件跳轉,可跳出多層循環,這是break所不具備的。goto語句也可構成一個循環。

    10、函數的參數

    (1)實際參數(實參):

    真實傳給函數的參數,叫實參。實參可以是:常量、變量、表達式、函數等。無論實參是何種類型的量,在 進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。

    (2)形式參數(形參):

    形式參數是指函數名后括號中的變量,因為形式參數只有在函數被調用的過程中才實例化(分配內存單 元),所以叫形式參數。形式參數當函數調用完成之后就自動銷毀了。

    11、函數遞歸

    (1)概念:
    程序調用自身的編程技巧稱為遞歸。

    (2)遞歸的兩個必要條件 :
    存在限制條;每次遞歸調用之后越來越接近這個限制條件

    12、數組

    (1)一維數組

    int arr[10];

    數組是一組相同類型元素的集合。arr[10]數組從arr[0]開始到arr[9]共10個元素,沒有arr[10]這個元素。數組是數組,不是指針,只是數組名具有指針的特性。

    關于一維數組名的運用:

    arr arr數組 arr+0 arr數組首元素 *arr arr數組首元素值 &arr arr數組的地址 &arr+1 下一個數組的地址(越界) &arr[0] arr[0]的地址 &arr[0]+1 arr[1]的地址

    (2)二維數組

    int arr[3][4];

    二維數組不要理解成3列4行的矩陣的樣式,應該理解為有3組元素個數為4的一維數組的集合,例:

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

    關于二維數組名的運用:

    arr[0][0] arr數組首元素的值 arr[0] arr數組中第一個一維數組 arr[0]+1 arr數組中第二個一維數組 *(arr[0]+1) arr數組中第一個一維數組第二個元素的值 &arr[0]+1 arr數組中第二個一維數組的地址

    (3)數組作為參數傳參時傳的是數組首元素的地址。

    13、指針

    指針是一個變量,存放著某一指定的變量單元的地址。例:

    int a=10; int *p=&a;

    定義一個整形變量a,并初始化為10,在定義一個指向整形變量a的指針變量p,用于存放a的地址。因為存放著a的地址,故而可以通過指針p來訪問a,對其解引用操作: printf(“%d”,*p);輸出結果為10,。也可通過指針p來修改a的值,如:*p=12;printf(“%d”,a);輸出結果為12。

    指針的大小在32位平臺的大小為4個字節,與其指向的數據類型無關。

    指針的運算一般與數組相結合,指針加1表示指針向后移動其指向數據類型大小個字節。p+1就表示指針p向后移動4個字節。

    14、結構體

    Struct A {int a;int b[10];char *arr; };

    結構體是一些變量的集合,可以是單個的變量,數組,指針,也可以是結構體,結構體傳參一般傳結構體的地址,效率是最高的。

    (1)結構體內存對齊:

    **

    原因:

    不是所有的硬件平臺都能訪問任意地址上的任意數據的;某些硬件平臺只能在某些地址 處取某些特定類型的數據,否則拋出硬件異常。

    數據結構(尤其是棧)應該盡可能地在自然邊界上對齊。
    原因在于,為了訪問未對齊的內存,處理 器需要作兩次內存訪問;而對齊的內存訪問僅需要一次訪問。

    規則:

    第一個成員在與結構體變量偏移量為0的地址處。

    其他成員變量要對齊到某個數字(對齊數)的整數倍的地址處。對齊數 = 編譯器默認的一個對齊數 與 該成員大小的較小值。 VS中默認的值為8

    結構體總大小為最大對齊數(每個成員變量都有一個對齊數)的整數倍。

    如果嵌套了結構體的情況,嵌套的結構體對齊到自己的最大對齊數的整數倍處,結構體的整體大小就是
    所有最大對齊數(含嵌套結構體的對齊數)的整數倍

    (2)結構體數組

    Struct A a[10];

    定義一個結構體數組a[10],該數組每個元素都代表一個結構體變量,共10個元素。

    15、枚舉

    enum Day { Mon,Tues,Wed, Thur, Fri, Sat, Sun }

    定義一個枚舉類型Day,其內容為所有取值可能,也叫枚舉常量,如果沒有對枚舉常量賦值,則第一個枚舉常量的值默認為0,后面依次加1。

    16、動態內存你分配

    (1)void malloc (size_t size);*

    這個函數向內存申請一塊連續可用的空間,并返回指向這塊空間的指針。如果開辟成功,則返回一個指向開辟好空間的指針。 如果開辟失敗,則返回一個NULL指針,因此malloc的返回值一定要做檢查。 返回值的類型是 void* ,所以malloc函數并不知道開辟空間的類型,具體在使用的時候使用者自己來決定。
    如果參數 size 為0,malloc的行為是標準是未定義的,取決于編譯器。

    (2) void calloc (size_t num, size_t size);*

    該函數的功能是為 num 個大小為 size
    的元素開辟一塊空間,并且把空間的每個字節初始化為0。 與函數
    malloc 的區別只在于 calloc 會在返回地址之前把申請的空間的每個字節初始化為全0

    (3)void realloc (void ptr, size_t size);**

    ptr 是要調整的內存地址 size 調整之后新大小 返回值為調整之后的內存起始位置。
    這個函數調整原內存空間大小的基礎上,還會將原來內存中的數據移動到 新 的空間。

    (4)void free (void ptr);*

    free函數用來釋放動態開辟的內存。 如果參數 ptr 指向的空間不是動態開辟的,那free函數的行為是未定義的。 如果參數 ptr 是NULL指針,則函數什么事都不做。

    17、文件

    (1)文件指針

    緩沖文件系統中,關鍵的概念是“文件類型指針”,簡稱“文件指針”。

    每個被使用的文件都在內存中開辟了一個相應的文件信息區,用來存放文件的相關信息(如文件的名字,文件狀態
    及文件當前的位置等)。這些信息是保存在一個結構體變量中的。該結構體類型是有系統聲明的,取名FILE.

    (2)打開、關閉一個文件

    //打開文件 FILE* fopen ( const char * filename, const char * mode ); //關閉文件 int fclose ( FILE * stream );

    (3)文件打開方式

    “r” 只讀 “w” 只寫 “a” 向文本文件尾添加數據 “rb” 二進制形式讀文件(只) “wb” 二進制形式寫文件 “ab” 向一個二進制文件尾添加數據 “r+” 為了讀和寫,打開一個文本文件 “w+” 為了讀和寫,建議一個新的文件 “a+” 在文件尾進行讀寫 “rb+” 為了讀和寫打開一個二進制文件 “wb+” 新建一個新的二進制文件讀和寫 “ab+” 打開一個二進制文件,在文件尾進行讀和寫

    (4)sprintf(buf,”%d”,a);

    把變量a以十進制的形式打印給字符型數組buf。

    Sscanf(buf,“%c”,&a);

    從字符型數組中獲取一個字符并賦給a。

    fprintf(fp,%d”,a);

    fp是指向一個文件的文件指針,該函數是將a以十進制形式寫入fp指向的文件中。

    fscanf(fp,%d”,&a);

    fp是一個指向文件的指針,該函數是從fp指向的文件中以十進制形式讀取數據并賦給a。

    二、數據結構

    1、單鏈表

    概念:
    鏈表是一種物理存儲結構上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈
    接次序實現的。

    Typedef struct List {Int data;struct List *next; }ListNode;

    插入一個節點:

    ListNode *tem=(ListNode*)malloc(sizeof(ListNode)); tem->data=data; tem->next=head->next; head->next=tem;

    刪除一個節點:

    ListNode *tem=head; for(;tem->next!=NULL;tem=tem->next) {if(tem->data==data){tem->next=tem->next->next;break; } }

    刪除鏈表頭:

    ListNode *tem=*head)->next; Free(*head); *head=tem;

    2、棧

    概念:
    一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端
    稱為棧頂,另一端稱為棧底。遵循先入后出的規則。

    3、隊列

    概念:
    只允許在一端進行插入數據操作,在另一端進行刪除數據操作的特殊線性表,隊列具有先進先出入隊列:進行插入操作的一端稱為隊尾
    出隊列:進行刪除操作的一端稱為隊頭。

    4、二叉樹

    概念 :
    一棵二叉樹是結點的一個有限集合,該集合或者為空,或者是由一個根節點加上兩棵別稱為左子樹和右子樹
    的二叉樹組成。

    二叉樹的特點:

  • 每個結點最多有兩棵子樹,即二叉樹不存在度大于2的結點。
  • 二叉樹的子樹有左右之分,其子樹的次序不能顛倒。
  • 總結

    以上是生活随笔為你收集整理的C语言+数据结构总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品99精品无码视 | 亚洲成av人片一区二区梦乃 | 日批免费观看 | 99r热| 色哟哟入口国产精品 | 国产做爰全免费的视频软件 | 成人小视频在线免费观看 | 免费看欧美成人a片无码 | 欧美色炮 | 好吊视频一区二区三区四区 | 亚洲图片欧美视频 | 国产喷水吹潮视频www | 亚洲一区 在线播放 | 最新免费av | 日韩一级片一区二区 | 成人αv| 亚洲涩涩网 | 一区二区免费av | 国产精品不卡在线观看 | 香蕉视频网站入口 | 在线视频日韩 | 美女扒开腿让男人操 | 国产l精品国产亚洲区久久 午夜青青草 | 久久com| av动漫免费看 | 香港一级纯黄大片 | 日韩夜夜操| 成人久久久精品乱码一区二区三区 | 午夜视频黄色 | 一区二区三区www | 成人小视频在线看 | 国产成人综合自拍 | xxxx96| 国产视频综合在线 | 午夜国产一级 | 欧美日韩亚洲在线观看 | 永久免费av | 蜜臀久久99精品久久久久久 | 三上悠亚影音先锋 | 伊人www | 国产精品理论片在线观看 | 亚洲国产99| 中文字幕亚洲乱码熟女一区二区 | 成人免费视频一区二区三区 | 欧美老女人性视频 | 成人在线影视 | 欧美视频第一页 | 亚洲美女色 | 精品乱码一区二区三区 | 网址你懂的在线 | 日韩熟女一区二区 | 亚欧在线免费观看 | 老色鬼在线| 欧美xxxxx视频 | 美女福利片| 奇米成人网 | 阿v天堂2018 俄罗斯丰满熟妇hd av色吧 | 欧美日韩中日 | 免费国产视频在线观看 | 亚洲成人黄色网址 | xxx日本黄色| 亚洲免费三区 | 国产视频日韩 | 亚洲激情图 | 国产一区二区精品 | 欧美一区不卡 | 日韩精品二区在线观看 | 在线免费观看视频 | 午夜精彩视频 | 国产无人区码熟妇毛片多 | 亚洲国产欧美日韩 | 欧美日韩激情视频在线观看 | 日韩高清不卡在线 | 色666| 国产在线成人 | 少妇一级淫片免费观看 | 91一区二区国产 | 久久精品二区 | 国产精品久久麻豆 | 国产精品27p | 久久99热这里只有精品 | 欧美色第一页 | 欧美韩国日本在线 | a级黄毛片| 日韩一区网站 | 亚洲性生活片 | 国产视频1区 | 男女在线免费观看 | 中文字幕狠狠干 | 日韩一区二区三区在线视频 | 日本啪啪啪一区二区 | 色婷婷电影网 | 亚洲欧美日本国产 | 主播一区二区 | 狠狠搞狠狠干 | 性欧美丰满熟妇xxxx性 | 国产色在线观看 | 欧美交换国产一区内射 | 久久久精品视 |