码迷,mamicode.com
首页 > 编程语言 > 详细

数组本质分析

时间:2020-01-10 15:34:33      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:变量   集合   需要   color   数据   print   操作符   不包含   不同的   

 
  • 数组是相同类型变量的有序集合,例如:int a[5];
  1. a代表数组第一个元素的起始地址
  2. 有5个int类型的数据,且是5个连续的内存空间。
  3. 这个20个字节的空间的名字叫a,a[0],a[1]都是数组中的元素,数组中的元素没有名字
  • 数组的大小
  1. 数组在一片连续的内存空间中存储元素
  2. 数组元素的个数可以显式或隐式指定:int a[5] = {2,3}; int b[] = {1,2};
 1 #include <stdio.h>
 2 int main()
 3 {
 4      int a[5] = {1,2};
 5      int b[] = { 3, 4 };
 6      printf("a[2]=%d\n",a[2]);
 7      printf("a[3]=%d\n",a[3]);
 8      printf("sizeof(a)=%d\n",sizeof(a));
 9      printf("sizeof(b)=%d\n", sizeof(b));
10      printf("数组a的元素个数=%d\n",sizeof(a)/sizeof(a[0]));
11      printf("数组b的元素个数=%d\n", sizeof(b) / sizeof(b[0]));
12      printf("&a=%p\n",&a);
13      printf("&a[0]=%p\n", &a[0]);
14      printf("a=%p\n",a);
15      return 0;
16 }
17 运行结果:
18 a[2]=0
19 a[3]=0
20 sizeof(a)=20
21 sizeof(b)=8
22 数组a的元素个数=5
23 数组b的元素个数=2
24 &a=004FF9F4
25 &a[0]=004FF9F4
26 a=004FF9F4
27 请按任意键继续. . .
  • 数组地址与数组名
  1. 数组名代表数组首元素的地址
  2. 数组的地址需要用取地址符&才能得到
  3. 数组首元素的地址和数组的地址相同
  4. 数组首元素的地址和数组的地址是两个不同的概念
  • 数组名的盲点
  1. 数组名可以看做一个常量指针
  2. 数组名“指向”的是内存中数组首元素的起始地址
  3. 数组名不包含数组的长度信息
  4. 在表达式中,数组名只能作为常量使用
  5. 只有在下列场合中数组名不能看做常量指针:数组名作为sizeof操作符的参数,数组名作为&运算符的参数
 1 #include <stdio.h>
 2 int main()
 3 {
 4      int a[5] = { 0 };
 5      int b[2];
 6      int *p = NULL;
 7      p = a;
 8      printf("a=%p\n",a);
 9      printf("p=%p\n",p);
10      printf("&p=%p\n",&p);
11      printf("sizeof(a)=%d\n",sizeof(a));
12      printf("sizeof(p)=%d\n", sizeof(p));
13      return 0;
14 }
15 运行结果:
16 a=004FFBD4
17 p=004FFBD4
18 &p=004FFBB8
19 sizeof(a)=20
20 sizeof(p)=4
21 请按任意键继续. . .
 
 

数组本质分析

标签:变量   集合   需要   color   数据   print   操作符   不包含   不同的   

原文地址:https://www.cnblogs.com/chengeputongren/p/12176144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!