结构体对齐和深拷贝浅拷贝
来源:互联网 发布:俄罗斯 苏联 知乎 编辑:程序博客网 时间:2024/04/28 06:35
-------------------结构体对齐-----------------------
#include<stdio.h>#include<stdlib.h>struct info{//结构体变量的大小能够被其最宽基本类型成员的大小锁整除//22 同类型不需要加在一起short sh1; //2 最宽基本类型char sh2; //1char ch[19];//19+1//28short sh3;//2+2 2,不足 补2int sh4; //4 最宽基本类型char ch1[19];//19+1};void main1(){printf("%d", sizeof(struct info));getchar();}struct info1{short sh1; //2+2int sh2; //4char ch[19];//19+1 结构体数组不算基本类型};void main2(){struct info1 info11 = { 10,200,"123456" };printf("%p\n", &info11); //00AFF980printf("%p\n", &info11.sh1);//00AFF980printf("%p\n", &info11.sh2);//00AFF984printf("%p\n", &info11.ch); //00AFF988getchar();}
--------------------深拷贝浅拷贝--------------------------
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>struct string{char *p;int length;};void mainA()//浅拷贝,共用一片内存{struct string str1;str1.length = 10;str1.p = (char*)malloc(sizeof(char) * 10);strcpy(str1.p, "hello");//拷贝字符串到str1.p中printf("%s\n", str1.p);struct string str2;str2.length = str1.length;str2.p = str1.p;*(str1.p) = 'q';printf("str1=%s\n", str1.p);//qelloprintf("str2=%s\n", str2.p);//qello//浅拷贝,共用一片内存getchar();}void main()//深拷贝,互不干涉{struct string str1;str1.length = 10;str1.p = (char*)malloc(sizeof(char) * 10);strcpy(str1.p, "hello");//拷贝字符串到str1.p中printf("%s\n", str1.p);struct string str2;str2.length = str1.length;str2.p = (char*)malloc(sizeof(char) * 10);//单独开辟内存strcpy(str2.p, str1.p);//str1.p拷贝到str2.p*(str1.p) = 'q';printf("str1=%s\n", str1.p);//qelloprintf("str2=%s\n", str2.p);//hellogetchar();}
阅读全文
0 0
- 结构体对齐,结构体深拷贝和浅拷贝
- 结构体对齐和深拷贝浅拷贝
- 结构体中的深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝 和 浅拷贝
- 浅拷贝和深拷贝
- 程序员在阿里巴巴总部工作是怎么样的?
- 程序员和程序艺术家
- 检索本地本文
- const
- 字符串应用
- 结构体对齐和深拷贝浅拷贝
- 队列
- 图像的梯度和幅值
- GET和POST中文乱码的解决方法
- 细说浏览器输入URL后发生了什么
- 抽象类与接口的区别
- POJ:3608 Bridge Across Islands 旋转卡壳
- 016 统计量总结、车比雪夫不等式
- 【07-Redis从文件中批量插入数据】