数组分为一维数组和二维数组。
一维数组
1.创建及初始化
#include<stdio.h>
#include<windows.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
for (i = 0; i < 10; i++)
{
scanf("%d ", &arr[i]);
}
printf("数组初始化为:");
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
直接初始化:
char arr1[]="abc";
char arr2[]={'a','b','c'};
int arr3[]={1,2,3};
注意:在[ ]中必须是常量。
一维数组的存储在内存中是连续存放的,由低地址到高地址依次存放。
二维数组:
与一维数组类似,打印时也需要用到下标:
#include<stdio.h>
int main()
{
int arr[3][3] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
printf("&arr[%d][%d]=%p\n",i,j,&arr[i][j]);
}
return 0;
}
可以看到,二维数组的存放也是连续的。
数组有关的运算:
先看一组代码
#include<stdio.h>
int main()
{
int arr[4] = { 1, 2, 3, 4 };
printf("%d\n", sizeof(arr)); //16 计算整个数组的sizeof
printf("%d\n", sizeof(arr+0)); //4
printf("%d\n", sizeof(arr[1])); //4
printf("%d\n", sizeof(*arr)); //4 首元素的sizeof
printf("%d\n", sizeof(&arr)); //4 整个数组的地址的sizeof
printf("%d\n", sizeof(*&arr)); //16 整个数组解引用的sizeof
printf("%d\n", sizeof(&arr+1)); //4 内存下一块数组的地址的sizeof
printf("%d\n", sizeof(&arr[0]+1)); //4
system("pause");
return 0;
}