结构体对齐,结构体深拷贝和浅拷贝
struct定義
#include<stdio.h>
#include<stdlib.h>
?
//最寬基本成員,char,int,double,結(jié)構(gòu)體數(shù)組都不是最寬基本成員
//結(jié)構(gòu)體大小必須可以整除最寬基本成員,是最寬基本成員的整數(shù)倍
//結(jié)構(gòu)體成員地址減去結(jié)構(gòu)體首地址,就是偏移量,偏移量必須可以整除成員的基本類型
structinfo{
???charc;
???doublesh;
???charch[9];
};
?
structinfo1
{
???shortsh1;
???intsh;
???charch[19];
};
?
voidmain(){
???structinfo1info11 = { 10, 200,"123456" };
???printf("%p\n",&info11);
???printf("%p\n",&info11.sh1);
???printf("%p\n",&info11.sh);
???printf("%p\n", &info11.ch);
?
???getchar();
}
2.結(jié)構(gòu)體深拷貝,淺拷貝
淺拷貝:共享一塊內(nèi)存,一個(gè)改了,另外一個(gè)也將改變
深拷貝:拷貝內(nèi)存的內(nèi)容
測(cè)試深拷貝和淺拷貝的例子如下:
A:首先,測(cè)試淺拷貝的情況
淺拷貝是通過結(jié)構(gòu)體屬性分別賦值來實(shí)現(xiàn)的。
這里的hello變成了kello了,說明這里通過結(jié)構(gòu)體的淺拷貝修改了原來結(jié)構(gòu)體的內(nèi)容
B:深拷貝的情況
總結(jié)
以上是生活随笔為你收集整理的结构体对齐,结构体深拷贝和浅拷贝的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sprintf,求字符串长度
- 下一篇: c语言中字符串操作的工具类