7-数组的概念和使用
一.数组的概念
在C语言中,数组是一种非常重要的数据结构,是一段连续、按顺序排列同类型内存块,用于存储相同数据类型的多个元素
1.怎么定义
数据类型 数组名 [数组长度];
2.数组的初始化
3.数组的元素访问
数组元素访问:数组名称[索引]
索引值从0开始,表示数组的第一个元素,一直到数组的长度减一
#include<stdio.h>int main()
{/*1.定义5个学生的年龄,并初始化2,定义学生的身高,并初始化注意:如果数组的长度没有写上,则数组的长度等于初始化元素的个数如果数组的长度已经写上,则数组的长度已固定,初始化元素的个数要小于等于数组的长度;没有赋值的位置元素默认如下:如果数组的类型是整数,则未赋值的位置上的元素默认为0如果是小数,则默认未0.0如果是字符,则默认为'\0'如果是字符串,则默认为NULL(空)*/int ages[5] = { 17,18,19,20 };double heights[] = { 165.9,172.0 };//printf("%d\n", ages); // 370144968// 获取第一个,第三个学生的年龄printf("第一个学生的年龄为%d\n", ages[0]); // 17printf("第三个学生的年龄为%d\n", ages[2]); // 19printf("第五个学生的年龄为%d\n", ages[4]); // 0// 修改数组heights中最后一个元素为175.2printf("修改前:%lf\n", heights[1]);heights[1] = 175.2;printf("修改后:%lf\n", heights[1]);return 0;
}
4.数组的遍历
#include<stdio.h>int main()
{int arr[5] = { 1,5,3,4 };for (int i = 0; i < 5; i++){printf("%d\n", arr[i]);}printf("第一个元素%d\n", arr[0]);return 0;
}
二.内存和内存地址
1.内存
内存(Memory)是计算机用于临时存储数据和程序的硬件设备,它是CPU能够直接访问的内存空间
内存的特点:
- 临时存储:断电后数据丢失(易失性)
- 高速访问:比硬盘快得多
- 直接访问:CPU可以直接读写
- 按地址访问:每一个存储单元都有唯一的地址
2.内存地址
内存地址是内存中每一个存储单元的唯一标识符,类似于现实生活中的门牌号码
内存地址的特点:
- 唯一性:每个内存单元都有唯一的地址
- 顺序性:地址按顺序排列
- 字节为单位:通常每一个地址对应1个字节(8bit)
#include<stdio.h>int main()
{int a = 1;int b = 2;int c = 10;int arr[5] = { 15, 25, 35, 45, 55 };printf("%p\n", &a);printf("%p\n", &b);printf("%p\n", &c);/*0000004A34F2F6940000004A34F2F6B40000004A34F2F6D4*/printf("输出数组中的内存地址\n");printf("%p\n", &arr); // 数组的首地址(第一个元素,第一个格子的内存地址)printf("%p\n", &arr[0]); // 数组的首地址printf("%p\n", &arr[1]); // 从内存的角度看,索引1表示偏移量为1个单位(首地址+往后偏移的单位)printf("%p\n", &arr[2]);/*000000062FFAF708000000062FFAF708000000062FFAF70C000000062FFAF710*/return 0;
}
#include<stdio.h>void printArr(int arr[], int len);int main()
{int num[5] = { 1,2,3,4,5 };int len = sizeof(num) / sizeof(int);printArr(num, len);return 0;
}void printArr(int arr[], int len)
{for (int i = 0; i < len; i++){printf("%d\n", arr[i]);}
}