数组的总结
一、二维数组的比较
创建并初始化 | 访问 | 内存中的存储 | |
一维数组 | 类型+数组名+操作符 例:int arr[3]={1,2,3} [ ]中必须为常量 初始化可为数字、字母、字符串 | 下标访问 下标从0开始 | 元素在内存中连续存放 |
二维数组 | 例: arr[3][2]={{2,3},{0},{1,5}} 行可省略,列不可省略 | 下标访问 | 元素在内存中连续存放 |
一维数组
例:
#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
int main()
{
//创建并初始化数组
intarr[10] = { 0 }; //[]中必为常量,不可有变量
//{}中可为数字、字符、字符串,也可之间为字符串
//数组的内存分配
//char a[]="a,b,c"; 占4个字节,含“\0”
//char a[]={'a', 'b', 'c'}; 占3个字节
//char * pa="abcdef"; 指针指向数组,包含整个数组
//intsz = sizeof(arr) / sizeof(arr[0]); //计算数组长度
inti = 0;
for(i = 0; i < 10; i++)
{
arr[i]= i; //对数组元素赋值,数组的使用下标访问,从下标0开始
}
for(i = 0; i < 10; ++i)
{
printf("%d\n", arr[i]); //输出数组的内容
printf("&arr[%d]=%p\n", i, &arr[i]); //结果显示数组在内存中连续存放
}
system("pause");
return0;
}
二维数组
#define_CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
int main()
{
intarr[3][4] = { 0 };
inti = 0;
for(i = 0; i < 3; i++)
{
intj = 0;
for(j = 0; j < 4; j++)
{
arr[i][j]= i + j;
}
}
for(i = 0; i < 3; i++)
{
intj = 0;
for(j = 0; j < 4; j++)
{
printf("%d", arr[i][j]); //输出数组元素
printf("&arr[%d][%d]=%p\n", i, j, &arr[i][j]); //结果显示二维数组在内存中也是连续存储的
}
}
system("pause");
return0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/85452d8a044fb489196cafb7352e8469.png)
![](https://i-blog.csdnimg.cn/blog_migrate/43d3d7aea5e74d7ccf6c4feb4434e187.png)