2021-1-17

今天主要學習了內存函數,以及結構體
1、memcpy:void memcpy(void dest,const void src,size_t num);將src的內存處內容拷貝num個字節到dest的內存中去,不能爲重疊拷貝。遇到\0不會停下來。
2、memmove:memmove():重疊拷貝,參數及返回類型和上面一樣,是拷貝具有重疊的數據。拷貝的單位爲字節。
3、memcmp:memcmp(const void

dest,const void src,size_t num):比較dest和src指向的內容一對一比較num個字節。
4、memset:memset(void
dest,int c,int count)內存設置,將dest指向的數據的count個字節內容改爲c。
內存函數主要需要注意一點,其操作的大小都爲字節。
結構體
定義及初始化
struct stu
{
char c;
int a;
char arr[];
struct S s;
};這是定義
struct stu s={'a',10,"hello world",{}};這是初始化。
結構體大小求法
首先得明白結構體內存對齊
對齊規則
1、第一個成員存儲在偏移量爲0的地址處。
2、其他的成員存儲在對齊數整數倍的地址處。
對齊數求法
爲編譯器默認值和成員數據大小中的較小值。
3、結構體大小爲其成員最大對齊數的整數倍。
4、如果結構體嵌套了其他的結構體,嵌套的結構體對齊到其內部成員最大的對齊數的整數倍,結構體整體大小爲整體對齊數的整數倍。
#pragma pack(4);設置默認對齊數爲4.
#pragma pack();取消設置的默認對齊數。
offsetof(結構體名,成員名)求成員偏移量。
結構體傳參應該儘量傳地址。
























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章