#include <stdio.h>
int main()
{
int arr[10]={0};//数组的不完全初始化,也可以直接不等于任何数,因为下边会赋值
//计算数组的元素个数,通过sizeof来确定这个数组的字符个数,我寻思这玩意不就在中括号里
int sz = sizeof(arr) / sizeof(arr[0]);//注意这里求的是元素个数,直接sizef(arr)是四十而不是10,详细看最后注释
printf("%d\n", sz);
//对数组内容赋值,数组是使用下标来访问的,下标从0开始。所以:
int i = 0;//做下标,此时可以是变量
for (i = 0; i < 10; i++)
{
arr[i] = i;
}
for (i = 0; i < 10; ++i)
{
printf("%d ", arr[i]);//输出数组本体
printf("&arr[%d] = %p\n", i, &arr[i]);//输出数组所在的存储位置%p就是这个意思
}
int arr2[3][4] = { 0 };//3为行数,4为列数,十二个元素
//二维数组创建时,行数可以忽略不写。并且所有维度的数组其第一个方括号的内容可忽略。
int a = 0;
for (a = 0; a < 3; a++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
arr2[a][j] = a * 4 + j;//其实就是通过循环定义了一个{0,1,2,3,4,5,6,7,8,9,10,11}
}
}
for (a = 0; a < 3; a++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("%d ", arr2[a][j]);//然后这里是输出这个矩阵
printf("&arr2[%d][%d] = %p\n", a, j, &arr2[a][j]);//这里强行以矩阵显示会很挤,所以做了换行处理
}
}
int arr1[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
int brr[4][3] = {};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
brr[j][i] = arr1[i][j];//通过一个循环把arr的行列置换变成了brr,三行四列变成四列三行
}
}
for (int i = 0; i < 4; i++)//for循环先循环行再循环列就可以以矩阵的形式输出数组
{
for (int j = 0; j < 3; j++)
{
printf("%d ", brr[i][j]);//循环输出brr
}
printf("\n");//每循环一行就换一次行
}
return 0;
}
/*char 数组里面是一个1 个元素1 个字节
int 和 long 数组里面在32位环境中都是1 个元素 4 个字节
long long 数组里面是1 个元素 8个字节
*/
一二维数组的形式以及存储
最新推荐文章于 2024-07-25 12:55:52 发布