目录
数组的初始化
数组在内存中的存储
数组的使用
数组的指针访问
数组的创建和初始化
数组是一组相同类型元素的集合
创建方式:
type_ t arr_name [const_n];
//type_t 是指数组的元素类型
//const_t 是一个常量表达式,用来指定数组的大小
注:数组创建,中要给一个常量才可以,不能使用变量
//数组创建
int arr[3][8];
char arr[4][3];
double arr[5][4];
//数组初始化
int arr[4][3] = {5,4,3,8};
int arr[4][3] = {{5,4},{3,8};
int arr[][3] = {{5,4}{3,8}};
数组的存储
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
for(i=0;i<sizeof(arr)/sizeof(arr[0]);++i)
{
printf("&arr[%d] = %p\n",i,&arr[i]);
}
return 0;
}
仔细观察可知,随数组下标的增长,元素的地址,也是有规律的递增
数组在内存中是连续存放的(二维数组在内存中也是连续存放的)
数组的使用
[ ],解引用操作符。数组访问操作符。
#include<stdio.h>
int main()
{
int arr[10]={0};//数组的不完全初始化
//对数组内容赋值,数组是使用下标来访问的,下标从0开始
int i = 0;//作下标
for(i=0;i<=10;i++)
{
arr[i] = i;
}
//输出数组的内容
for(i=0;i<10;++i)
{
printf("%d",arr[i]);
}
return 0;
}
1.数组使用下标访问时,下标从0开始
2.数组大小计算
int arr[10];
int sz = sizeof(arr)/sizeof(arr[0]);
数组的指针访问
数组的数组名其实是数组首元素的地址
#include<stdio.h>
int main()
{
int arr[10] = {0};
int i = 0;
int *p_arr = arr;
for(i=0;i<sizeof(arr)/sizeof(arr[0]);++i)
{
*(p_arr+i) = i;
}
for(i=0;i<sizeof(arr)/sizeof(arr[0]);++i)
{
printf("%d\n",*(p_arr+i));
}
return 0;
}