当前位置:   article > 正文

C语言-数组_c语言中定义了一个全局的char型数组,在a方法中赋完值,但是在b方法中取不到

c语言中定义了一个全局的char型数组,在a方法中赋完值,但是在b方法中取不到

《C语言入门经典》第5版 Ivor Horton   第五章 数组 读书笔记

5.1.2 什么是数组

         数组是 一组 数目固定、类型相同 的数据项,数组中的数据项 称为 元素,数组中的元素 都是 int、long 或其他类型。

访问数组元素的值,有两种方法指定 索引值:

       ① 使用一个简单的整数,明确指定要访问的元素;

       ② 使用一个在执行期间计算的整数表达式(限制:结果必须是整数,该整数必须是对数组有效的索引值)。

5.2 寻址运算符 (&)

     输出其操作数的内存地址,把寻址运算符放在变量名称之前,函数就可以利用这个变量的地址,修改在这个变量中存储的值。

输出一些变量的地址:

  1. #include <stdio.h>
  2. int main(){
  3. // 定义一些整型变量
  4. long a = 1L;
  5. long b = 2L;
  6. long c = 3L;
  7. // 定义一些浮点型变量
  8. double d = 4.0;
  9. double e = 5.0;
  10. double f = 6.0;
  11. printf("A variable of type long occupies %u bytes.\n", sizeof(long));
  12. printf("Here are the address of some variables of type long:\n");
  13. printf("The address of a is: %p\nThe address of b is: %p\nThe address of b is: %p\n", &a, &b, &c);
  14. printf("A variable of type double occupies %u bytes.\n", sizeof(double));
  15. printf("Here are the address of some variables of type long:\n");
  16. printf("The address of d is: %p\nThe address of e is: %p\nThe address of f is: %p\n", &d, &e, &f);
  17. return 0;
  18. }

运行结果:

显示出来的地址,地址值逐渐变小,呈等差数列,地址 b 比 a 低 4,地址 e 比 d 低 8。

变量 d 和 c 的地址 之间有一个空隙的原因

许多编译器给变量分配内存地址时,其地址都是 变量字节数 的倍数,所以 4 字节变量的地址是 4 的倍数,8 字节变量的地址 是 8 的倍数。这就确保内存的访问是最高效的。(如果间隔大于 变量字节数,可能是调试版本模式下,会配置额外的空间)

5.3 数组和地址

索引值 表示 各个元素 与 数组开头 的偏移量

5.5 确定数组的大小

  1. double values[5] = {1.5, 2.5, 3.5, 4.5, 5.5};
  2. size_t element_count = sizeof(values)/sizeof(values[0]);
  3. printf("The size of the array is %d bytes ", sizeof(values));
  4. printf("and there are %d elements of %d bytes each\n", element_count, sizeof(values[0]));

表达式 sizeof values[0] 可以输出数组中一个元素所占的字节数。size_t 类型是 sizeof 运算符生成的类型。

循环处理数组中的所有元素时,可以使用 sizeof 运算符:

  1. double values[5] = {1.5, 2.5, 3.5, 4.5, 5.5};
  2. double sum = 0.0;
  3. for(int i = 0; i < sizeof(values)/sizeof(values[0]); i++)
  4. sum = values[i];
  5. printf("The sum of the values is %.2f", sum);

5.6 多维数组

5.7 多维数组的初始化

 

要处理多维元素数组中的所有元素,需要一个嵌套循环。嵌套的层数 就是 数组的维数

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/668416
推荐阅读
相关标签
  

闽ICP备14008679号