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. 指针变量也是变量,这是一种存储地址信息的变量。
  • 相关阅读:
    数据分析(三)
    数据分析(二)
    数据分析(一)
    sql server 脚本创建数据库和表
    各种距离分析
    DataTable数据导出CSV文件
    WPF中Grid布局
    111
    123
    SVN的安装与使用
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/12608979.html
Copyright © 2011-2022 走看看