• 第27课 数组的本质分析


    数组的概念:

    数组当中的元素没有名字,我们只能通过数组名和下标来访问数组中的元素。数组名a代表的是这5个存储空间的集合。代表的是这一段内存。

    数组的大小:

    示例程序:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int a[5] = {1, 2};
     6     int b[] = {1, 2};
     7     
     8     printf("a[2] = %d
    ", a[2]);
     9     printf("a[3] = %d
    ", a[3]);
    10     printf("a[4] = %d
    ", a[4]);
    11     
    12     printf("sizeof(a) = %d
    ", sizeof(a));
    13     printf("sizeof(b) = %d
    ", sizeof(b));
    14     printf("count for a: %d
    ", sizeof(a)/sizeof(int));
    15     printf("count for b: %d
    ", sizeof(b)/sizeof(int));
    16     
    17     return 0;
    18 }

    运行结果如下:

    当我们指定数组中的一部分元素之后,其他的元素就会被初始化为0,我们可以利用这个特性来讲数组全部初始化为0。做法为int a[5] = {0}; 我们将第一个元素初始化为0,其他的元素由编译器默认初始化为0。

    数组地址与数组名:

    数组的地址需要用取地址符&才能得到。数组首元素的地址与数组地址在值上是一样的,但是它们的意义却不相同。

    示例程序:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int a[5] = { 0 };
     6 
     7     printf("a = %p
    ", a);
     8     printf("&a = %p
    ", &a);
     9     printf("&a[0] = %p
    ", &a[0]);
    10     
    11     return 0;
    12 }

    运行结果如下:

    地址其实隐含两个概念,第一是起始地址,第二是长度。

    a表示第一个元素的起始地址,长度为4。

    &a表示数组的起始地址,长度为20。

     数组名的盲点:

    数组名可以看做是一个常量指针,但是使用起来并不是常量指针。

    示例程序:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int a[5] = {0};
     6     int b[2];
     7     int* p = NULL;
     8     
     9     p = a;
    10     
    11     printf("a = %p
    ", a);
    12     printf("p = %p
    ", p);
    13     printf("&p = %p
    ", &p);
    14     printf("sizeof(a) = %d
    ", sizeof(a));
    15     printf("sizeof(p) = %d
    ", sizeof(p));
    16    
    17     printf("
    ");
    18 
    19     p = b;
    20     
    21     printf("b = %p
    ", b);
    22     printf("p = %p
    ", p);
    23     printf("&p = %p
    ", &p);
    24     printf("sizeof(b) = %d
    ", sizeof(b));
    25     printf("sizeof(p) = %d
    ", sizeof(p));
    26     
    27     b = a;
    28   
    29     return 0;
    30 }

    第27行是错误的,去掉错误行,编译运行。

    运行结果如下:

    sizeof对指针和数组名操作时,结果是不一样的。

    小结:

  • 相关阅读:
    APP测试--功能测试
    笨方法学python--读文件
    笨方法学python--参数,解包,变量
    Jmeter工具学习(四)——插件安装及使用(转载)
    JMeter工具学习(三)——获取全局变量 token
    FROM_UNIXTIME()时间戳转换函数
    软件测试用例编写规范总结(转载)
    Jmeter之Bean shell使用(二)(转载)
    JMeter工具学习(一)工具使用详细介绍
    JMeter工具学习(二)——获取登录 token
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9538038.html
Copyright © 2020-2023  润新知