為什麼要用C語言中的結構體?我感覺它有些難,不用的話有什麼後果?

2 個回答
嵌入式时代
2019-06-20

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

但是這樣就沒有辦法再引用這個結構體類型了,因為它沒有名字。定義好變量後,就可以用“.”運算符來訪問結構體的各個成員了。例如:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

但是這樣就沒有辦法再引用這個結構體類型了,因為它沒有名字。定義好變量後,就可以用“.”運算符來訪問結構體的各個成員了。例如:

很明顯,用結構體來描述平行四邊形的邊長問題,比定義多個 double 變量方便多了。只需要用 struct parallelogram 定義一個變量,這個變量自己內部就有平行四邊形的短邊長,長邊長,對角線1長和對角線2長了。

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

但是這樣就沒有辦法再引用這個結構體類型了,因為它沒有名字。定義好變量後,就可以用“.”運算符來訪問結構體的各個成員了。例如:

很明顯,用結構體來描述平行四邊形的邊長問題,比定義多個 double 變量方便多了。只需要用 struct parallelogram 定義一個變量,這個變量自己內部就有平行四邊形的短邊長,長邊長,對角線1長和對角線2長了。而且不會弄混,p1 和 p2 的成員彼此是隔離的,使用 “p1.”訪問的變量肯定是 p1 的。這樣一來,要定義再多的平行四邊形都不怕了。

C語言結構體的初始化

我們使用基礎數據類型時,初始化很方便,直接賦值就可以了,結構體怎麼初始化呢?請看下面的C語言代碼:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

但是這樣就沒有辦法再引用這個結構體類型了,因為它沒有名字。定義好變量後,就可以用“.”運算符來訪問結構體的各個成員了。例如:

很明顯,用結構體來描述平行四邊形的邊長問題,比定義多個 double 變量方便多了。只需要用 struct parallelogram 定義一個變量,這個變量自己內部就有平行四邊形的短邊長,長邊長,對角線1長和對角線2長了。而且不會弄混,p1 和 p2 的成員彼此是隔離的,使用 “p1.”訪問的變量肯定是 p1 的。這樣一來,要定義再多的平行四邊形都不怕了。

C語言結構體的初始化

我們使用基礎數據類型時,初始化很方便,直接賦值就可以了,結構體怎麼初始化呢?請看下面的C語言代碼:

這幾種方式都是可以的,只不過要是使用第一種方式定義,p1 必須是局部變量。p1 若是全局變量,就只能用常數表達式定義了。

另外需要特別注意的是,一旦變量定義好了,就不能直接用下面種方式賦值了,但是同類型之間可以賦值:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

但是這樣就沒有辦法再引用這個結構體類型了,因為它沒有名字。定義好變量後,就可以用“.”運算符來訪問結構體的各個成員了。例如:

很明顯,用結構體來描述平行四邊形的邊長問題,比定義多個 double 變量方便多了。只需要用 struct parallelogram 定義一個變量,這個變量自己內部就有平行四邊形的短邊長,長邊長,對角線1長和對角線2長了。而且不會弄混,p1 和 p2 的成員彼此是隔離的,使用 “p1.”訪問的變量肯定是 p1 的。這樣一來,要定義再多的平行四邊形都不怕了。

C語言結構體的初始化

我們使用基礎數據類型時,初始化很方便,直接賦值就可以了,結構體怎麼初始化呢?請看下面的C語言代碼:

這幾種方式都是可以的,只不過要是使用第一種方式定義,p1 必須是局部變量。p1 若是全局變量,就只能用常數表達式定義了。

另外需要特別注意的是,一旦變量定義好了,就不能直接用下面種方式賦值了,但是同類型之間可以賦值:

我們用一個完整的例子結束本節,請看下面的C語言代碼:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

但是這樣就沒有辦法再引用這個結構體類型了,因為它沒有名字。定義好變量後,就可以用“.”運算符來訪問結構體的各個成員了。例如:

很明顯,用結構體來描述平行四邊形的邊長問題,比定義多個 double 變量方便多了。只需要用 struct parallelogram 定義一個變量,這個變量自己內部就有平行四邊形的短邊長,長邊長,對角線1長和對角線2長了。而且不會弄混,p1 和 p2 的成員彼此是隔離的,使用 “p1.”訪問的變量肯定是 p1 的。這樣一來,要定義再多的平行四邊形都不怕了。

C語言結構體的初始化

我們使用基礎數據類型時,初始化很方便,直接賦值就可以了,結構體怎麼初始化呢?請看下面的C語言代碼:

這幾種方式都是可以的,只不過要是使用第一種方式定義,p1 必須是局部變量。p1 若是全局變量,就只能用常數表達式定義了。

另外需要特別注意的是,一旦變量定義好了,就不能直接用下面種方式賦值了,但是同類型之間可以賦值:

我們用一個完整的例子結束本節,請看下面的C語言代碼:

編譯並執行,得到如下結果:

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

但是這樣就沒有辦法再引用這個結構體類型了,因為它沒有名字。定義好變量後,就可以用“.”運算符來訪問結構體的各個成員了。例如:

很明顯,用結構體來描述平行四邊形的邊長問題,比定義多個 double 變量方便多了。只需要用 struct parallelogram 定義一個變量,這個變量自己內部就有平行四邊形的短邊長,長邊長,對角線1長和對角線2長了。而且不會弄混,p1 和 p2 的成員彼此是隔離的,使用 “p1.”訪問的變量肯定是 p1 的。這樣一來,要定義再多的平行四邊形都不怕了。

C語言結構體的初始化

我們使用基礎數據類型時,初始化很方便,直接賦值就可以了,結構體怎麼初始化呢?請看下面的C語言代碼:

這幾種方式都是可以的,只不過要是使用第一種方式定義,p1 必須是局部變量。p1 若是全局變量,就只能用常數表達式定義了。

另外需要特別注意的是,一旦變量定義好了,就不能直接用下面種方式賦值了,但是同類型之間可以賦值:

我們用一個完整的例子結束本節,請看下面的C語言代碼:

編譯並執行,得到如下結果:

注意,上面定義的變量 a 與 結構體裡的 a 並不衝突,因為結構體裡的 a 是用過“.”運算符訪問的,編譯器可以區分,它們屬於不同的命名空間。

好了,學會了C語言的結構體,就算是要描述一隻貓,也不怕了。

小結

到這裡,相信題主應該能發現C語言結構體的方便之處了。事實上,結構體的用處非常大,如果題主閱讀我的文章,應該會發現,結構體和指針結合起來,簡直“毀天滅地”,能夠實現各種各樣好玩的特性。

C語言的結構體是非常重要的語法,畢竟當初祖師爺發明C語言的其中一個首要任務就是要能提供數據的結構化。題主覺得結構體難,估計是因為初學C語言的緣故。

還記得剛開始接觸 C 語言的時候,為了描述一個平行四邊形的邊長和對角線長,我定義了四個變量:短邊長 a,長邊長 b,對角線1長 d1,對角線2長 d2。

在寫代碼的過程中,發現又要定義一個平行四邊形,於是我不得不又定義了四個變量:a2,b2,d12,d22,結果變量又多又亂,寫代碼很不舒服,太容易弄混了。當時我還想,幸好沒有第三個,第四個平行四邊形。

後來,我發現原來 C語言原來還有結構體這種語法,不禁感嘆當初我那種做法實在是太笨了。

C語言中的結構體(複合數據類型)

C語言初學者最先接觸到的數據類型大多都只具有單一的值,例如整數,字符,真假值,小數,在C語言中(或者說編程語言中)這些數據類型通常被稱作基本數據類型

事實上,C語言中還有複合數據類型那什麼是複合數據類型呢?實際上,你可能已經用過複合數據類型了:由許多字符組成的字符串,就是典型的符合數據類型。

複合數據類型,其實就是由基本類型組成的數據類型。本節打算介紹的結構體也是一種複合數據類型,我們不討論結構體的定義,直接看實例:

用 C 語言制定一個描述平行四邊形邊長和對角線長的結構體數據類型。

這個需求是容易實現的,我們用 double 類型來描述“長度”,那麼結構體可以如下定義:

要注意的是,結構體定義完後,大括號後面要用 “;”結束。parallelogram 並不表示一個變量,它表示一種複合數據類型,struct parallelogram{ double a, b, d1, d2; } 整體可以看做一個就像 int,double 一樣的數據類型。那怎麼使用它呢?請看下面的C語言代碼實例:

這樣我們就定義好了 p1 和 p2 兩個結構體變量。事實上,定義好結構體 數據類型之後,可以只使用 struct parallelogram 來定義變量,請看:

這樣定義的 p3 和 p4 與上面那種方式定義的 p1 和 p2 是一樣的。如果採用上面那種定義方式,parallelogram 也可以不寫:

但是這樣就沒有辦法再引用這個結構體類型了,因為它沒有名字。定義好變量後,就可以用“.”運算符來訪問結構體的各個成員了。例如:

很明顯,用結構體來描述平行四邊形的邊長問題,比定義多個 double 變量方便多了。只需要用 struct parallelogram 定義一個變量,這個變量自己內部就有平行四邊形的短邊長,長邊長,對角線1長和對角線2長了。而且不會弄混,p1 和 p2 的成員彼此是隔離的,使用 “p1.”訪問的變量肯定是 p1 的。這樣一來,要定義再多的平行四邊形都不怕了。

C語言結構體的初始化

我們使用基礎數據類型時,初始化很方便,直接賦值就可以了,結構體怎麼初始化呢?請看下面的C語言代碼:

這幾種方式都是可以的,只不過要是使用第一種方式定義,p1 必須是局部變量。p1 若是全局變量,就只能用常數表達式定義了。

另外需要特別注意的是,一旦變量定義好了,就不能直接用下面種方式賦值了,但是同類型之間可以賦值:

我們用一個完整的例子結束本節,請看下面的C語言代碼:

編譯並執行,得到如下結果:

注意,上面定義的變量 a 與 結構體裡的 a 並不衝突,因為結構體裡的 a 是用過“.”運算符訪問的,編譯器可以區分,它們屬於不同的命名空間。

好了,學會了C語言的結構體,就算是要描述一隻貓,也不怕了。

小結

到這裡,相信題主應該能發現C語言結構體的方便之處了。事實上,結構體的用處非常大,如果題主閱讀我的文章,應該會發現,結構體和指針結合起來,簡直“毀天滅地”,能夠實現各種各樣好玩的特性。

歡迎在評論區一起討論,質疑。文章都是手打原創,每天最淺顯的介紹C語言、linux等嵌入式開發,喜歡我的文章就關注一波吧,可以看到最新更新和之前的文章哦。

TonyDeng
2019-06-21

結構體就是構造數據的結構。對應現實需求,我們需要各種各樣不同類型、性質的數據,這些數據的構成成分有各自的意義和用法,對應地就有結構體。

其實結構體不是計算機編程特有的,現實就有。最典型的就是座標,二維、三維數據有兩個或三個數值,按照一定的順序排列和解釋,數學上抽象為(x,y)這樣的數據結構,編程上,也可以把兩個數值組合成一個結構體,對應座標這種概念。諸如一個運動的物體,也可以用三維座標和時刻、速度等組合為一個數據對象,方便運算和描述。結構體中每個成分如何理解和使用,是你自己定義和設計的。

相關推薦

推薦中...