当前位置: 网站首页>小程序开发>网站开发

滑县微信公众号开发【滑县网络推广】滑县建站、滑县网站维护、滑县网页制作、滑县微信小程序代运营公司

发表日期: 2021-05-06 09:09:08 浏览次数:90

滑县微信公众号开发【滑县网络推广】滑县建站、滑县网站维护、滑县网页制作、滑县微信小程序代运营公司


滑县,河南省直管县, [1]  安阳市下辖县 [2]  ,位于河南省北部,经度:114.5193,纬度:35.5754,与安阳、濮阳、鹤壁、新乡接壤。北距安阳市70公里,南距郑州市130公里,东北距濮阳市53公里,西南距新乡市70公里,西北距鹤壁新市区25公里。总面积1814平方公里,耕地面积195.21万亩。 [3-4] 

滑县是中原经济区粮食生产核心区、河南省第一产粮大县、中国粮食生产先进单位、中国唯一的粮食生产先进县,有“豫北粮仓”之称。 [5]  滑县主要旅游景点,隋唐大运河、张家遗址、瓦岗寨、明福寺塔、欧阳书院、千翠湖等。

2017年10月,滑县通过国家专项评估检查,由河南省人民政府正式批准退出贫困县 [6]  。第二批节水型社会建设达标县(区)。 [7] 

2017年10月,滑县通过国家专项评估检查,由河南省人民政府正式批准退出贫困县 [6]  。


结构体的定义

short、int、long、char、float、double 这六个关键字代表C语言里的六种基本数据类型。C语言中,还提供了struct结构体数据类型,结构体是一种构造类型,由若干成员组成,每个成员可以是一个基本数据类型也可以又是一个构造类型,因此结构体可以用来存放一组不同类型的数据。例如:

1
2
3
4
5
6
typedef struct _Student
{
    int nId;
    char szName[16];
    double dbHeight;
}Student,*pStudent;

我们定义了一种Student结构体数据类型和一种pStudent结构体指针数据类型,可以使用Student、pStudent定义变量。

结构体的大小

结构体对齐方式:

  • 自然对齐

数据成员对齐规则:

  • 各成员变量存放的起始地址相对于结构体起始地址偏移量是sizeof(基本类型)整数倍

  • 如果成员为非基本类型,偏移量为其子成员中最大的基本类型长度的整数倍

结构体整体对齐规则:

  • 结构体的总大小是其成员中最大基本类型长度的整数倍

结构体变量和结构体指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
typedef struct _Student
{
    int nId;
    char szName[16];
    double dbHeight;
}Student,*pStudent;
 
//变量的定义
//1.结构体
Student tagStuA;
//2.指针
pStudent pTagStuB;
Student* pTagStuC;
 
//变量的初始化
//1.大括号初始化
Student tagStuC = {202101,"xiaoxin",100.0};
//1.单个成员赋值
tagStuC.dbHeight = 101.0;
//3.同结构体变量可以给同结构体变量赋值
Student tagStuD = tagStuC;
pStudent pTagStuE = &tagStuC;
 
//变量的访问, . 和 -> 运算符的优先级比 * 运算符高
printf("%s\n",tagStuC.szName);
printf("%s\n",pTagStuE->szName);

结构体应用

  1. 结构体数组

  2. 结构体指针数组

  3. 结构体作为参数传参

  4. 结构体指针作为参数传参

传值和传地址的区别

我们知道,一个结构体的成员可能有很多个,当我们定义结构体的时候,底层会根据我们的结构体成员算出对齐值,然后进行申请内存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
typedef struct _Student
{
    int nId;
    char szName[16];
    double dbHeight;
}Student,*pStudent;
 
void ChangeValueA(Student tagStu)
{
    tagStu.szName = xiaoxin;
}
 
void ChangeValueB(pStudent pTagStu)
{
    pTagStu->szName = xiaoxin;
}
 
int main()
{
    Student tagStu;
    tagStu.szName = xiaoxin;
    //传值
    ChangeValueA(tagStu);
    //传地址
    ChangeValueB(&tagStu);
}

当结构体作为函数参数的时候,如果直接传结构体变量,函数参数相当于直接拷贝了一份结构体,这样特别消耗内存。当传入tagStu给函数的时候,函数的tagStu相当于重新申请的变量,拷贝了我们的实际参数tagStu,我们在函数内部修改不会改变实际参数的值,这就是传值。
如果我们想修改实际参数的值,需要把地址传过去,而指针就是地址,函数拷贝的是地址,根据地址修改里面的值,则可以改变实参的值,这个就是传地址。

浅拷贝shallow copy、深拷贝deep copy

  1. 结构体中只有基本类型成员时,结构体变量可以直接赋值给相同类型的结构体变量,浅拷贝没问题

  2. 当结构体包含指针成员时,浅拷贝会造成野指针问题

  3. 为结构体指针成员重新分配内存拷贝数据,深拷贝

  4. C语言中编译器默认结构体浅拷贝,深拷贝由程序员自己实现

  5. 深拷贝会造成内存浪费问题

写时拷贝copy-on-write
采用引用计数机制,共享内存数据,解决野指针和内存浪费问题


微信图片_20210425092605.jpg


滑县微信公众号开发滑县网络推广滑县建站、滑县网站维护、滑县网页制作、滑县微信小程序代运营公司

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878