2 C語言之結構體概述

2022-09-12 13:27:05 字數 834 閱讀 8526

(1)c語言中的2種型別:原生型別和自定義型別。

(1)結構體定義時需要先定義結構體型別,然後再用型別來定義變數。

(2)也可以在定義結構體型別的同時定義結構體變數。

// 定義型別

struct people

;// 定義型別的同時定義變數。

struct student

s1;// 將型別struct student重新命名為s1,s1是乙個型別名,不是變數

typedef struct student

s1;(1)結構體可以認為是從陣列發展而來的。其實陣列和結構體都算是資料結構的範疇了,陣列就是最簡單的資料結構、結構體比陣列更複雜一些,鍊錶、雜湊表之類的比結構體又複雜一些;二叉樹、圖等又更複雜一些。

(2)陣列有2個明顯的缺陷:第乙個是定義時必須明確給出大小,且這個大小在以後不能再更改;第二個是陣列要求所有的元素的型別必須一致。更複雜的資料結構中就致力於解決陣列的這兩個缺陷。

(3)結構體是用來解決陣列的第二個缺陷的,可以將結構體理解為乙個其中元素型別可以不相同的陣列。結構體完全可以取代陣列,只是在陣列可用的範圍內陣列比結構體更簡單。

(1)陣列中元素的訪問方式:表面上有2種方式(陣列下標方式和指標方式);實質上都是指標方式訪問。

(2)結構體變數中的元素訪問方式:只有一種,用.或者->的方式來訪問。

(.和->訪問結構體元素其實質是一樣的,只是c語言規定用結構體變數來訪問元素用. 用結構體變數的指標來訪問元素用->。

實際上在高階語言中已經不區分了,都用.)

(3)結構體的訪問方式有點類似於陣列下標的方式

思考:結構體變數的點號或者->訪問元素的實質是什麼?其實本質上還是用指標來訪問的。

C語言結構體

一 實訓目的 1 掌握結構體型別和變數的定義及應用 2 掌握結構體陣列及應用 3 掌握結構體巢狀及應用。二 實訓內容 1 輸入並執行如下程式,若有錯誤,請修改。include define stu struct student void main stu s1 s2 stu p if 60 else...

C語言6 結構體,共用體

選票統計 time limit 1000ms memory limit 65536k 題目描述 某校學生會主席由全校學生投票選舉產生,共有 名候選人報名參選,編號為1到 0 1000 全校有 名學生 0 30000 每人都可以投票。但每人只能投一票,每票只能選1名候選人。請你設計乙個程式能夠統計出哪...

2C語言基本資料型別與常量變數

任課老師 李新宇教學時間 2012.9.3 課時 3課時班級 1001 1101 姓名 學習目標 知識與技能 1 掌握c語言的基本資料型別與表示範圍,區別學習無符號整數和有符號整數,並能正確選擇不同的資料型別表示資料。2 掌握常量和變數的概念。3 區別學習十進位制,八進位制,十六進製制的整型常量 能...