数组分为一维数组和二维数组。
一维数组
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; }