结构体对齐,结构体深拷贝和浅拷贝

简介:  struct定义 #include<stdio.h> #include<stdlib.h>   //最宽基本成员,char,int,double,结构体数组都不是最宽基本成员 //结构体大小必须可以整除最宽基本成员,是最宽基本成员的整数倍 //结构体成员地址减去结构体首地址,就是偏移量,偏移量必须可以整除成员

  1. struct定义

#include<stdio.h>

#include<stdlib.h>

 

//最宽基本成员,char,int,double,结构体数组都不是最宽基本成员

//结构体大小必须可以整除最宽基本成员,是最宽基本成员的整数倍

//结构体成员地址减去结构体首地址,就是偏移量,偏移量必须可以整除成员的基本类型

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.结构体深拷贝,浅拷贝

浅拷贝:共享一块内存,一个改了,另外一个也将改变

深拷贝:拷贝内存的内容

测试深拷贝和浅拷贝的例子如下:

A:首先,测试浅拷贝的情况

浅拷贝是通过结构体属性分别赋值来实现的。

这里的hello变成了kello了,说明这里通过结构体的浅拷贝修改了原来结构体的内容

B:深拷贝的情况


目录
相关文章
|
3月前
|
存储
如何理解结构体的浅拷贝与深拷贝
结构体的浅拷贝仅复制对象的引用或基本数据类型值,不创建新对象;深拷贝则会递归地复制所有对象及其引用的对象,形成完全独立的新对象。两者主要区别在于是否共享内部对象。
|
7月前
|
编译器 C++
简述构造函数、拷贝构造函数、深拷贝浅拷贝、析构函数
简述构造函数、拷贝构造函数、深拷贝浅拷贝、析构函数
|
8月前
|
存储 C语言
指针变量作为函数参数
指针变量作为函数参数
74 0
|
8月前
|
存储 C++
怎样引用指针变量
怎样引用指针变量
47 0
|
编译器 C++
【C++学习】类和对象 | 拷贝构造 | 探索拷贝构造函数为什么需要引用传参 | 深拷贝 | 初识运算符重载
【C++学习】类和对象 | 拷贝构造 | 探索拷贝构造函数为什么需要引用传参 | 深拷贝 | 初识运算符重载
157 0
|
编译器
拷贝构造与深浅拷贝
一、拷贝构造函数 二、拷贝初始化 三、深浅拷贝
74 0
|
JSON JavaScript 数据格式
js对象的直接赋值、浅拷贝与深拷贝
js对象的直接赋值、浅拷贝与深拷贝
155 0
js对象的直接赋值、浅拷贝与深拷贝
|
JavaScript 前端开发
数组和对象的浅拷贝,深拷贝
数组和对象的浅拷贝,深拷贝
数组和对象的浅拷贝,深拷贝
|
编译器 C++
C++入门知识-拷贝构造函数-浅拷贝、深拷贝
C++入门知识-拷贝构造函数-浅拷贝、深拷贝
115 0
|
编译器 C++
类中含有指针,无拷贝构造导致的双倍释放,浅拷贝与深拷贝
类中含有指针,无拷贝构造导致的双倍释放,浅拷贝与深拷贝

热门文章

最新文章