zoukankan      html  css  js  c++  java
  • 7指针1

    指针变量也是变量

    1. 初识:结构体

    可以通过 C 语言里面的工具来描述这种类型的特点,这个可以用来描述和定义新类型的工具,就叫做:结构体。

    struct point {
        // 描述这个类型的组成部分
    };
    

    struct point,也就是结构体点类

    struct point p1, p2;
    

    通过点类来定义对象

    struct point {
        int x, y; 
    };
    

    在这个过程中,有没有一种盖房子的感觉?先有地基,再盖一楼,然后是二楼。也就是在程序中,先有基础数据类型,然后是基于这些基础数据类型,定义出新的数据类型。

    让 p1 代表点 (2, 3),让 p2 代表点 (7, 9),代码如下:

    p1.x = 2;
    p1.y = 3;
    p2.x = 7;
    p2.y = 9;
    

    点“.”运算符,这个也叫做“直接引用”运算符,p1.x,意思是 p1 变量里面的 x 字段。

    2. 结构体变量的大小

    struct point p;
    sizeof(p);
    sizeof(struct point);
    

    这两种使用 sizeof 方法的代码均能正确的告诉你一个 struct point 类型的变量占用的存储空间大小。

    Data1 结构体,只包含一个整型和两个字符型字段,所占用的空间大小应该是 4+1+1=6 个字节啊,怎么变成了 8 个字节?

    Data2 结构体,和 Data1 结构体包含字段种类都是一样的,那既然 Data1 是 8 个字节,为什么 Data2 是 12 个字节呢?

    对于某个结构体类型而言,其存储单元大小,等于它当中占用空间最大的基础类型所占用的字节数量。

    对于 Data1 结构体类型来说,整型是其当中占用空间最大的基础类型,它的一个存储单元的大小,就是 4 个字节,等于它当中整型字段所占用的字节数量。也就是说,Data1 这个结构体类型,要不就占用 1 个存储单元,即 4 个字节的空间,要不然就占用 2 个存储单元,即 8 个字节的存储空间,不会出现 6 个字节的情况。

    结构体的字段在内存中存储的顺序,是按照结构体定义时的顺序排布的,而且当本存储单元不够安放的时候,就从下个存储单元的头部开始安放。

    在设计结构体的时候,不仅要设计新的结构体类型中所包含的数据字段,还需要关注各个字段之间的顺序排布。

    3. 指针变量也是变量

    指针是变量,指针是一种用来存储地址的变量!

    int a = 123, *p = &a;
    printf("%d %p %d
    ", a, p, *p);
    

    p 变量中存储的就是 a 变量的首地址,也就是说,我们可以通过 p 变量中所存储的信息。

    小结

    1. 结构体是用来创造新类型的利器,而结构体类型所占存储空间大小,与其内部字段的组成和各个字段的顺序排布均有关。
    2. 指针变量也是变量,这是一种存储地址信息的变量。
  • 相关阅读:
    【CV论文阅读】ExtremeC3Net: 使用高级C3模块的极轻量人像分割模型
    【pytorch基础】pytorch的初始化
    【CV基础】如何理解空洞卷积(dilated convolution)?
    关于研发规范化的一些实践和思考
    vuecli入门项目实战
    C/C++用.ico图片替换.exe图标(VS2017)(转)
    C# 多线程修改控件时,提示在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke(转)
    C#读取ACCESS提示“未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
    ubuntu的常用命令
    C# DataTable 按整形字段排序
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/12608979.html
Copyright © 2011-2022 走看看