数组本质分析
Posted chengeputongren
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组本质分析相关的知识,希望对你有一定的参考价值。
-
数组是相同类型变量的有序集合,例如:int a[5];
-
a代表数组第一个元素的起始地址
-
有5个int类型的数据,且是5个连续的内存空间。
-
这个20个字节的空间的名字叫a,a[0],a[1]都是数组中的元素,数组中的元素没有名字
-
数组的大小
-
数组在一片连续的内存空间中存储元素
-
数组元素的个数可以显式或隐式指定: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 ",a[2]); 7 printf("a[3]=%d ",a[3]); 8 printf("sizeof(a)=%d ",sizeof(a)); 9 printf("sizeof(b)=%d ", sizeof(b)); 10 printf("数组a的元素个数=%d ",sizeof(a)/sizeof(a[0])); 11 printf("数组b的元素个数=%d ", sizeof(b) / sizeof(b[0])); 12 printf("&a=%p ",&a); 13 printf("&a[0]=%p ", &a[0]); 14 printf("a=%p ",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 请按任意键继续. . .
-
数组地址与数组名
-
数组名代表数组首元素的地址
-
数组的地址需要用取地址符&才能得到
-
数组首元素的地址和数组的地址相同
-
数组首元素的地址和数组的地址是两个不同的概念
-
数组名的盲点
-
数组名可以看做一个常量指针
-
数组名“指向”的是内存中数组首元素的起始地址
-
数组名不包含数组的长度信息
-
在表达式中,数组名只能作为常量使用
-
只有在下列场合中数组名不能看做常量指针:数组名作为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 ",a); 9 printf("p=%p ",p); 10 printf("&p=%p ",&p); 11 printf("sizeof(a)=%d ",sizeof(a)); 12 printf("sizeof(p)=%d ", 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 请按任意键继续. . .
以上是关于数组本质分析的主要内容,如果未能解决你的问题,请参考以下文章