一二维数组的形式以及存储

#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个字节
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值