一、定義
結構體:稱為自定義資料型別
定義格式: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 結構體型別所占用的記憶體空間是最大資料型別的整數倍。因為結構體型別的變數在分配記憶體時有記憶體...