欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言学习笔记——(2)数组

程序员文章站 2022-05-05 20:41:53
...

数组属于构造数据类型和基本数据类型是有区别的,构造数据类型是基于基本数据类型得到的。构造数据类型还有指针,结构体,共用体,枚举。个人感觉(指针是C语言的精髓,结构体后期使用很广泛,共用体、枚举使用的比较少,像指针,结构体在STM32中随处可见)。

数组是由一系列相同的数据类型组成的一个集合(如:int [10],就是10个int类型的数据组成的一个集合)

元素:数组名[下标];下标:下标就是数组中元素的位置距离首地址的偏移量(具体的解释涉及到指针的知识,个人感觉数组和指针的关系是很紧密的,数组和指针的笔记放在一块看)

int a[5];
1. 数组中第一个元素的表达:数组名[0]
2. 数组中“第一个元素”的地址表达:&数组名[0] , 数组名
3. 从键盘上获取一个数据,存储到数组中第一个元素里面:scanf("%d",&a[0]);
4. 输出下标为i的元素内容:printf("%d",a[i]);----将数组中第i+1个数据打印到我们屏幕上
5. 打印元素的地址:格式控制符 :%p
6. 打印数组中所有元素的地址:空间连续,地址也是连续

注意:&a = &a[0] = a。但是 “&a——表示整个数组的地址”

程序测试:

#include "stdio.h"

int main()
{
	int a[5] = {0,1,2,3,4};
	printf("a[0] = %d\n",a[0]);// 数组中第一个元素的表达
	printf("&a[0] = %p\ta = %p\n",&a[0],a);// 数组中“第一个元素”的地址表达
	for(int i=0;i<5;i++)
		printf("&a[%d] = %p\t",i,&a[i]);// 数组中第i个元素的地址
	printf("\n");
	for(int i=0;i<5;i++)
		printf("(a+%d)= %p\t",i,(a+i));// 用a+i表示数组中第i个元素的地址
	printf("\n");
	printf("&a = %p\t&(&a+1) = %p\n",&a,(&a+1));//&a——表示整个数组的地址
	return 0;
}

输出结果:

//输出结果:
a[0] = 0
&a[0] = 0x7ffc2d694c00	a = 0x7ffc2d694c00
&a[0] = 0x7ffc2d694c00	&a[1] = 0x7ffc2d694c04	&a[2] = 0x7ffc2d694c08	&a[3] = 0x7ffc2d694c0c	&a[4] = 0x7ffc2d694c10	
(a+0)= 0x7ffc2d694c00	(a+1)= 0x7ffc2d694c04	(a+2)= 0x7ffc2d694c08	(a+3)= 0x7ffc2d694c0c	(a+4)= 0x7ffc2d694c10	
&a = 0x7ffc2d694c00	&(&a+1) = 0x7ffc2d694c14

注:个人笔记,只写了自己感觉主要的,感觉二维数组感觉就是在多个一维数组的组合,跟多解释在指针笔记中的数组数组部分。