C語言:Struct之結構陣列以及結構的巢狀
一、結構陣列
為什麼要使用結構陣列?
舉個例子來說,假如我們定義了一個結構體book,顯然每一本書都可以用一個book型別的結構體來描述。要描述兩本書就需要用兩個這樣的結構變數,以此類推,如果我們要處理10本,100本,1000本...我們難道要一個一個定義嗎?我們想到陣列這種資料結構,它可以一次性分配一塊記憶體用於存放多個數據,所以我們可以使用一個該結構的陣列來存放這1000本(或者更多)的書。我們把這種形式的陣列稱為結構陣列。
結構陣列的宣告
首先假如我們定義的book結構體如下:
struct book {
char title[40];
char author[40];
float value;
};
宣告一個結構陣列與宣告一個其他型別的陣列的方法是一樣的:
struct book library[MAXBKS];//MAXBKS是一個int型的整數
這條語句宣告library為一個具有MAXBKS個元素的陣列,陣列的每個元素都是bbook型別的結構。因此,library[0]是一個book結構,library[1]是一個book結構,以此類推。
結構陣列的使用方法
用成員運算子("."),來表示結構陣列中的成員:
library //book結構陣列 library[2] //陣列中的元素,就是我們定義的第三個book結構 library[2].title //char型別的陣列,library[2]中的title成員 library[2].title[4] //library[2]中的title成員陣列中的一個字元
二、巢狀結構
一個結構中含有另一個結構,稱為巢狀結構。
巢狀結構在很多時候是非常有用的,比如要建立一個關於朋友的檔案資訊的結構,這些資訊中肯定要包含名字(name)這個資訊,而一個人的名字又包含了姓和名,這時我們就可以把名字(name)本身表示成一個結構,在建立朋友檔案結構的時候直接將其包含進去。
首先建立一個name結構:
struct name{ //name結構宣告
char firstname[20];
char lastname[20];
};
有了name結構,可以在此基礎上建立guy結構了:
struct guy{ struct name handle;//結構巢狀 char favfood[20]; char job[20]; float income; };
巢狀結構如何初始化?
初始化方法與普通的結構體初始化方法相同:
struct guy fellow = { //初始化變數
{"xu","song"},
"hambergers",
"student",
23.00
};
巢狀結構中的成員操作:
fellow.handle.firstname //執行結果:xu
fellow.handel.lastname //執行結果:song
fellow.favfood //執行結果:hambergers
fellow.job //執行結果:student
fellow.income //執行結果:23.00
相關推薦
C語言:Struct之結構陣列以及結構的巢狀
一、結構陣列為什麼要使用結構陣列?舉個例子來說,假如我們定義了一個結構體book,顯然每一本書都可以用一個book型別的結構體來描述。要描述兩本書就需要用兩個這樣的結構變數,以此類推,如果我們要處理10本,100本,1000本...我們難道要一個一個定義嗎?我們想到陣列這種資
C語言:理解函式指標陣列和定義
函式指標陣列和定義 陣列是一個存放相同型別資料的儲存空間,那我們已經學習了指標陣列,比如: int *arr[10];//陣列的每個元素是int* 那要把函式的地址存到一個數組中,那這個陣列就叫函式指標陣列,那函式指標的陣列如何定義呢? int (
C語言: 有一個字元陣列的內容為:"student a am i", 請你將陣列的內容改為"i am a student".
題目:有一個字元陣列的內容為:"student a am i", 請你將陣列的內容改為"i am a student". 要求:不能使用庫函式。只能開闢有限個空間(空間個數和字串的長度無關)。 分析:分為兩大部分:①把整個字元陣列逆置
c語言4個比較大小,函式的巢狀
#include <stdio.h> int main()// { int max_4(int a,int b,int c,int d);//對max _4的宣告 int a,b,c,d,max; printf("Please enter 4 interger numbe
《C語言及程式設計》實踐參考——迴圈的巢狀流程圖
迴圈的巢狀流程圖(1)求s=1!+2!+……10!,即求1到10的階乘和[參考解答]或者: (2)求s=1+2^2+3^3+4^4+5^5+6^6,要求n^n不能用求冪的運算直接計算(n^n表示n的n次
C語言:利用指標編寫程式,定義一個3行3列的二維陣列,並在程式中對其進行賦值,陣列元素的型別不限,輸出該二維陣列以及各行的均值
題目來源:大工慕課 連結 作者:Caleb Sung 題目要求 利用指標編寫程式,定義一個3行3列的二維陣列,並在程式中對其進行賦值,陣列元素的型別不限,輸出該二維陣列以及各行的均值,各行
C語言:constkeyword、結構體
data con post -s 標簽 初始化 weight 什麽 聯系 前幾節內容的解說,主要是內存地址及指針的分析。這一節解說一下easy混淆的keywordconstant及結構體的知識。 一、constkeyword 1. 字符常量的指針 char const
C語言:利用結構體的學生成績
結構體-學生成績管理 題目:有50個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入50個學生資料,要求打印出每門課的平均成績,以及三門課總分最高的學生的資料(包括學號、姓名、3門課的成績,三門課的總分)。 #include<stdio.h> #define
c語言:typedef + struct + 指標
c語言規範,定義結構體: typedef struct ANSWER_HEADER { u8 u8Type; u8 u8Code; u32 u32TimeStamp; struct ANSW
c語言——線性表之順序結構
#include <stdio.h> #include <stdlib.h> #include <conio.h> //線性表——順序儲存 #define LIST_INIT_SIZE 10 #define LISTINCREMENT 10 #define ERR
C語言簡單入門之結構體和連結串列
C語言的連結串列也是一個很重要很難啃的骨頭,我是這麼覺得的! 以下只是個人對連結串列的總結和記錄方便日後複習所用,如有錯誤,請留言狠批,謝謝! 先說下連結串列的簡單實現: 如上圖,我們定義一個結構體: 1,2,3,4,5是結構體資料。a,b,c,d,e則是指標變
軟體素材---linux C語言:拼接字串函式 strcat的用例(與char陣列聯合使用挺好)
【標頭檔案】#include <string.h> 【原型】 1 char *strcat(char *dest, const char *src); 【引數】: dest 為目標字串指標,src 為源字串指標。
c語言:第一次作業,分支,順序結構
1.本章學習總結(2分) 1.1 思維導圖 1.2 本章學習體會及程式碼量學習體會 1.2.1 學習體會 學了幾節課的c語言了,因為沒自學的原因,跟不上進度。對於c語言現在挺有興趣的,願意去花時間去彌補。最近才搞懂了scanf和int的確切含義。之前老是把int以為是輸入。對於for()括號裡面的成分
C語言:存取結構體成員的點運算子(.)和箭頭運算子(->)的區別
一直以為這兩個是沒有什麼區別的,可以相互替換,今天又翻了一下《C語言核心技術》,明白了其中的奧妙。 相同點:兩個都是二元操作符,其右操作符是成員的名稱。 不同點:點操作符左邊的運算元是一個“結果為結構”的表示式; 箭頭操作符左邊的運算元是
C語言:陣列指標總結
#include<stdio.h> //int (*brr)[3] 陣列指標 //int *brr[3] 指標陣列 int main() { int brr[2][3] = {1,2,3,4,5,6}; printf("brr == %
C語言:大小寫不敏感之字串比較
自己寫的: #include <stdio.h> int strcmpl(char a[],char b[]) { int i,flag=0; for(i=0;a[i]!='\0'||b[i]!='\0';i++) { if(a[i]-
C語言:最值之差
題目: #include <stdio.h> int main() { int n,a[10000],i=0,max,min,t; scanf("%d",&n); while(scanf("%d",&a[i])!=EOF) i++; max=
C語言:分支結構程式
一.關係運算符和表示式 在程式中經常需要比較兩個量的大小關係,以決定程式下一步的工作。比較兩個量的運算子稱為關係運算符。 (1)關係運算符及優先次序 在C語言中有以下關係運算符: 1.< 小於 2. <= 小於或等於 3. > 大於 4. &g
C 語言 :陣列元素擴大n倍
#include <stdio.h> #define N 10 void Mularray1(int a[],int b); void Mularray2(int *aPtr,int b); void main(){ int a[N] = {1,2,3,4
C語言:控制結構與流程圖
任務程式碼: #include <stdio.h> #include <math.h> int main() { float fHeight,fStandar_Weight