結 構 體
1.結構體的定義
struct 結構體名
;2.結構體的初始化
1.有名結構體初始化
1.全部初始化
struct student
;struct student a = ;
2.部分初始化
struct student a = ;
3.定義結構體時初始化定義變數
struct student
a = ;
2.無名結構體初始化
1.全部初始化
struct
a = ;
2.部分初始化
struct
a = ;
3.結構體的訪問
1.通過結構體變數名訪問
a.name
a.***
a.num
a.score
2.通過結構體指標訪問
ps->name
ps->***
ps->num
ps->score
4.結構體成員變數的操作
從終端接收乙個學生的姓名、性別、學號、成績
存放在乙個結構體當中,並且在終端上列印除輸
入的所有資訊
結構體1.結構體在記憶體中的儲存
1.記憶體對齊
1.成員變數只能存放在位址為自身
型別基本長度整數倍的記憶體位址單
元當中2.結構體型別的長度必須是成員變
量中最大基本型別的整數倍
2.記憶體中有3中對齊方式
1.位元組對齊
2.半字對齊
3.字對齊
共用體1.概念
共用體內部的成員變數共同使用同一塊記憶體空間
共用體中儲存的資料是上次賦值後的成員變數值
2.儲存
記憶體大小端:
記憶體低位址存放低資料位叫做小端
記憶體低位址存放高資料位叫做大端 列舉
enum weekday;
enum weekday day = 0;
指標高階
1.一級指標:指向乙個普通變數的指標,儲存的是變數
的記憶體位址編號
2.二級指標:指向乙個指標變數的指標,儲存的是指標
變數的記憶體位址編號
3.const 唯讀型別
1. const int *p;
2. int const *p;
3. int * const p;
4. const int * const p;
5. int const * const p;
1. 1和2屬於同一種形式,它們將*p修飾成為唯讀
型別沒有辦法通過指標變數p修改對應記憶體位址
單元中的值,但是可以通過直接使用變數名修改
對應記憶體單元中的值
2. 3中const修飾指標變數p,此時p必須初始化,否
則將無法改變指標變數p中的值,但是可以利用
指標p改變其對應記憶體單元中的值
3. 4和5屬於同一種形式,他們將*p和p修飾成唯讀
型別,既沒有辦法修改p中的值,也沒有辦法修
改指標變數p對應的記憶體單元的值,注意定義該
型別指標變數p時,必須初始化
4.void指標
char *p = &ch;
int *q = null;
q = p;
不僅能把位址賦值給void型指標,並且還能把指標
的型別賦值給void型指標,所以void型指標既可以
變成char*指標也可以變成int*指標,還可以變成其
餘型別的指標
5.陣列指標和指標陣列
1.陣列指標是乙個指標,該指標指向乙個陣列
陣列指標佔4個位元組記憶體空間,空間中儲存的是
乙個指向陣列的位址
int (*p)[5];
定義了乙個陣列指標p,p變數佔4個位元組儲存空間,
但是該指標指向乙個5個元素的整型陣列
2.指標陣列是乙個陣列,該陣列中儲存的元素都為
指標型別
指標陣列的大小由陣列元素的個數來決定,每個
元素中儲存的值都為乙個位址
int *p[5];
定義了乙個指標陣列,陣列名為p,指標陣列佔
20個自己的連續空間,並且每個元素都儲存了
指向乙個整型變數的指標
6.陣列和指標的關係
1.一維陣列和指標的關係
一維陣列的陣列名就是指向陣列第乙個元素的
指標int a[5];
int *p = a;
a[n] = *(a+n) = *(p+n) = p[n]
2.二位陣列和指標的關係
行指標二維陣列中,指向每一行的乙個指標叫做
行指標
a[0]是指向第一行元素的乙個列指標
int a[3][4];
int *p = a[0];
第n行第m個元素
a[n-1][m-1] = *(a[n-1]+m-1) = *(p+(n-1)*總列數+m-1)
二位陣列陣列名是指向二位陣列的乙個行指標
該行指標指向第一行的列指標,a+1則指向第二
行的列指標
使用a訪問第n行第m個元素
a[n-1][m-1] = *(*(a+n-1)+m-1)
行指標和陣列指標的關係
行指標就是指向乙個陣列的陣列指標,只不過
該陣列就是二位陣列的一行
int a[3][4];
int (*p)[4] = a;
二維陣列的陣列名是指向第一行元素陣列的一
個陣列指標
int a[3][4];
int (*p)[4] = a;
int *p = a[0];
int *p = *a;
int *p = &a[0][0];
int (*p)[4] = &a[0];
C語言學習 結構體
include include include 宣告結構體 struct student student結構體名 int age char int main 初始化結構體變數 bbbb strcpy s1.name,bbbb s1.age 22 s1.m 列印結構體變數,逐個列印 printf s ...
C語言學習 結構體
題目要求 學生的記錄由學號 姓名 專業組成,根據班級人數,將學生記錄存放在結構體陣列中,由於部分同學轉專業,學生記錄發生了變化,請程式設計實現根據學號查詢查詢學生並修改專業,分別輸出轉專業和未轉專業的學生記錄。要求 班級人數 學生記錄均由鍵盤輸入 include define m 100 要求 1....
c語言學習結構體
結構體格式 struct 結構體名稱 結構體是一種集合,它裡面包含了多個變數或陣列,資料型別可以相同也可以不相同。eg可以包含乙個人的身高 double 體重 int 顏值 char ii 21 結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member list為結構體成...