c到c語言筆記的簡單介紹

本文目錄一覽:

C語言筆記(五)—-struct,enum,typedef等

成員表列由若干個成員組成,每個成員都是該結構的一個組成部分。

對每個成員也必須做類型聲明。

其形式為:

類型聲明符 成員名;

例如:

注意, 最後括弧外面的;分號是不可少的 。

結構定義之後,才可以進行變數聲明。

凡聲明為結構 stu 的變數都由上述4個成員組成。

由此可見,結構是一種複雜的數據類型,是數目固定,類型不同的若干有序變數的集合。

聲明結構變數 有以下三種方法。

使用上面定義的stu為例:

如:

也可以用宏定義使一個符號常量來表示一個結構類型。例如:

例如:

這種形式的聲明的一般形式為:

例如:

這種聲明的一般形式為:

第三種方法與第二種方法的區別在於第三種方法中省去了結構名,而直接給出結構變數。

在程序中使用結構變數時,往往不把她作為一個整體來使用。

在ANSI C中除了允許有相同類型的結構變數相互賦值以外,一般對結構變數的使用,包括 賦值、輸入、輸出、運算 等都是通過結構變數的成員來實現的。

表示結構變數成員的一般形式為:

結構變數名.成員名

例如: boy1.num boy2.sex

如果成員本身又是一個結構,則必須逐級找到最低級的成員才能使用。如: boy1.birthday.month

結構變數的賦值就是給各成員賦值。

數組的元素也可以是結構類型的。

因此可以構成結構型數組。

初始化賦值:

當然也可以在定義 stu結構 時同時聲明 pstu。

賦值是把結構變數的首地址賦予該指針變數,不能把結構名賦予該指針變數。

如果 boy 是被聲明為 stu類型 的結構變數。

則:

有了結構指針變數,就能更方便地訪問結構變數的各個成員。

其訪問的一般形式為:

(*結構指針變數).成員名

結構指針變數-成員名

例如: (*pstu).num 或 pstu-num

例如:

介紹數組的時候,曾介紹過數組的長度是預先定義好的,在整個程序中固定不變。

C語言中不允許動態數組類型。

例如:

但是又有此需求,為了解決這個問題,C語言提供了一些內存管理函數,這些內存管理函數可以按需要動態地分配內存空間,也可把不再使用的空間回收待用,為有效地利用內存資源提供了手段。

常用的內存管理函數有3個:

例子:分配一塊區域,輸入一個學生數據

上面的例子採用了動態分配的辦法為一個結構分配內存空間。

每一次分配一塊空間可用來存放一個學生的數據,我們可稱之為一個節點。

有多少個學生就應該申請分配多少塊內存空間,也就是說要建立多少個節點。

當然用結構數組也可以完成上述工作,但如果預先不能準確把握學生人數,也就無法確定數組大小。

而且當學生留級、退學之後也不能把該元素佔用的空間從數組中釋放出來。

用動態存儲的方法可以很好地解決這些問題。

有一個學生就分配一個節點,無須預先確定學生的準確人數,某學生退學,可刪去該節點,並釋放該節點佔用的存儲空間,從而節約了寶貴的內存資源。

另一方面,用數組的方法必須佔用一塊連續的內存區域。

而使用動態分配時,每個節點之間可以是不連續的(節點內是連續的)。

節點之間的關係可以用指針實現。

即在節點結構中定義一個成員項來存放下一節點的首地址,這個用於存放地址的成員,常把他稱為指針域。

可在第一個節點的指針域內 存入第二個節點的首地址,在第二個節點的指針域內 又存入第三個節點的首地址,如此串聯下去直到最後一個節點。

最後一個節點因無後續節點連接,其指針域可賦值 0

這種連接方式,在數據結構中稱為「鏈表」。

鏈表的基本操作主要有以下幾種:

例子:建立一個三個節點的鏈表,存放學生數據。為簡單起見,我們假定學生數據結構中只有學號和年齡兩項。可編寫一個建立鏈表的函數create。程序如下:

create函數 用於建立一個有 n個節點 的鏈表,他是一個指針函數,他返回的指針指向 stu結構。

在create函數內定義了三個 stu結構 的指針變數。

head為頭指針,pf為指向兩相鄰節點的前一節點的指針變數。

pb為後一節點的指針變數。

枚舉是一種 基本數據類型 ,而不是一種 構造類型 ,因為他不能再分解為任何基本類型。

enum 枚舉名{ 枚舉值表 };

例如: enum weekday { sun,mou,tue,wed,thu,fri,sat };

enum weeakday a,b,c;

或者為:

enum weekday { sun,mou,tue,wed,thu,fri,sat }a,b,c;

或者為:

enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

例子:

說明:

只能把枚舉值賦予枚舉變數,不能把元素的數值直接賦予枚舉變數。如:

a=sun;b=mon; 是正確的

a=0;b=1; 是錯誤的。

如果一定要把數值賦予枚舉變數,則必須使用強制類型轉換。

如: a=(enum weekday)2;

還應該說明的是枚舉元素不是字元常量也不是字元串常量,使用時不要加單、雙引號。

例子:

typedef定義的一般形式為:

typedef 原類型名 新類型名

其中原類型名中含有定義部分,新類型名一般用大寫表示,一般用大寫表示,以便於區別。

有時也可用 宏定義 來代替 typedef 功能,但是 宏定義 是由 預處理 完成的,而 typedef 則是 在編譯時 完成的,後者更為靈活方便。

使用 typedef 定義數組、指針、結構等類型將帶來很大的方便,不僅使書寫簡單而且使意義更加明確,因而增強了可讀性。

例如:

又如:

c語言記筆記需要多厚

正常筆記本即可。c語言是一種特殊的科目,它需要的是大量的實際操作,因為有的錯誤是需要自己操作才會意識到的,c語言是非常的嚴謹。

%c 在C語言程序里代表什麼

如果是在printf語句裡面:如printf(“%c”,a);就是輸出asc2里值為a的值的字元。

如果是scanf(“%c”,a);就是將輸入的一個字元的asc2 的值存到a的地址中。

當然還有一些其它的用法。

比如用一些循環體後可以用來輸出漢字之類的。。。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231915.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 01:08
下一篇 2024-12-11 01:08

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論