結構體知識點梳理

2021-09-14 04:18:02 字數 1295 閱讀 9171

typedef struct teacher

teacher;

int main()

; strcpy(t0.name,"t1name"); //t1. "."操作符 定址操作,計算name相對於大變數的偏移量,在cup中計算,沒有操作記憶體

//通過指標的方式 操作 記憶體空間

teacher *p = null;

p = &t0;

printf("p->age :%d",p->age);// -> 是定址操作符 算age相對於t0大變數的偏移量

return 0;

}

2)定義型別的同時,定義變數;

struct teacher

t1,t2;

3)直接定義結構體變數;

struct

t3,t4;

#include "stdafx.h"

#include#include"string.h"

using namespace std;

typedef struct teacher

teacher;

void copyteacher(teacher *to,teacher *from)

void swapteacher(teacher *p1,teacher *p2)

/*memcpy(&tmp,p1,sizeof(teacher));

memcpy(p1,p2,sizeof(teacher));

memcpy(p2,&tmp,sizeof(teacher));

*/}void printteacher(teacher *myarray,int num)

for(i=0;i>myarray[i].id;}*/

for(i=0;i>myarray[i].age;

}sortage(myarray, num);

printteacher(myarray, num);

return 0;

}

問題:

1、給初始化為null的結構體指標賦值時,會報錯,why?

tmp是null的時候,指向安全區域,你解引用就會錯誤。你申請空間時,因為tmp指向堆空間的申請的區域,是可以解引用的。還有如果你不給申請的指標賦值,然後解引用的話,因為指標指向的是未知區域,也是危險的,回錯誤。要解引用乙個指標,首先指標不能指向安全區域了,然後還不能是指向未知區域。

2、在函式體中(除主函式之外),定義的結構體變數,結構體指標必須初始化,why?

結構體知識點總結

對於結構體的知識點,我主要分為以下幾點來講解 結構體的宣告 結構體型別的建立 結構體成員的訪問 結構體的初始化 結構體內存對齊 位段。1.結構體的宣告 struct stu 分號不能丟2.結構體型別的建立 有兩種建立的方法,第一種 struct stu struct stu s1 定義了乙個結構體變...

Linux知識點梳理

使用者名稱 主機名 root hostname 使用者名稱 主機名稱 符號含義 當前使用者屬於root使用者 當前使用者屬於普通使用者 注意 對系統進行配置管理時,如要root使用者 檢視主機名稱 hostname設定主機名稱 hostname hadoop senior.com注意 該方式設定,當...

spring 知識點梳理

1.spring預設所有管理的bean都是單例模式 懶載入,所有的bean都是交給spring容器中的map管理,生命週期與spring相同,如果使用多例模式,bean則是交給記憶體管理,生命週期與spring無關 2.ssm分層 控制層 服務層 資料層 對應的註解分別為 controller se...