結構體,你好!

2021-08-19 17:52:39 字數 1484 閱讀 9517

一、定義

結構體:稱為自定義資料型別

定義格式:struct 型別名

另外我們要明白:

1、自定義資料型別定義完成以後等同於內建型別

2.結構體不能定義乙個自身的普通成員變數,但可以定義乙個指向自身的指標變數

struct student  

; struct a

; struct b

;

二、初始化及成員的訪問

1.結構體普通變數通過「.」號來訪問其成員

2.結構體指標通過「->」訪問其成員

int main()  

; struct student stu3=; //由於結構體是聚合型別,則當只初始化一部分時,剩餘部分預設值為0.在此處age=0

stu3.age = 30;

strcpy(stu3.name,"zhangfei");//此處用字串拷貝函式對其進行修改

struct student *pstu = &stu2;

*pstu.age = 35;//error("."的優先順序高於"*",但在這裡應該先對pstu進行解引用後在進行"."操作)

(*pstu).age = 35;//ok 等同於 pstu -> age = 35;

strcpy(pstu->name,"zhangfei");

show(&stu2);

} void show(const struct student *pstu) //結構體的列印函式。

三、簡單化結構體——typedef

1.typedef的使用

typedef unsigned long long int uint64; //無符號長整型8位元組64位 可以簡寫為uint64

typedef int * pint;//定義乙個整型指標的資料型別pint

typedef int arr[10];//定義乙個長度為10的整型陣列的資料型別arr

typedef int(*pfun)(int,int);//函式指標的資料型別

2 .typedef重新定義結構體

typedef struct student 

student;

3.typedef與巨集定義的比較

typedef int*  pint;//《型別定義》  

# define pint int*//《字元替換》

pint i,j;//i,j,都是int *

pint x,y;//在這裡x為int *,y為int型別

對其理解:

首先 是去掉typedef,檢視定義的變數型別,然後再

加上typedef,就由該型別變數變成為這種資料型別

C語言學習之路,結構體,你好

char a和 int b進行打包,看一下這個結構體是否占用4 1個位元組 首先看一下例子 include struct abc int main int argc char argv 顯示的結果是 the buf is 8 發現這個abc的結構體所占用的記憶體空間大小為8個位元組,和之前我所想的不...

結構體型別 結構體變數 結構體陣列 結構體指標

問題1 一元錢換為1 2 5分的硬幣,有多少種兌換方?本題要點分析及參 對各種可能情況進行一一測試。這是實現迴圈的一種方式 窮舉法 但實際上只有只有餘額才能兌換成其它面值的硬幣 main 注意換行的控制和每列的對齊 問題3 某鐵路線上有10個站,需要準備多少種客票?main b a 0 p prin...

結構體 結構體陣列

void test 函式遞迴呼叫 允許函式體裡再次呼叫函式本身 使用遞迴一定要有出口 long fact int n return n fact n 1 定義乙個新的資料型別 struct mypoint 結構體型別所占用的記憶體空間是最大資料型別的整數倍。因為結構體型別的變數在分配記憶體時有記憶體...