c语言 二维数组笔记

2023-12-20 07:56:52

C语言二维数组

通过c语言代码,了解二维数组的一些基本概念。

代码

#include <stdio.h>
#include <string.h>

//这里一定要注意:memset 函数是按字节对内存块进行初始化的。

//对于 char 型的数组,可以将其初始化为任意一个字符。
//但对于 int 型的数组,由于 memset 函数按字节对内存块进行初始化,所以不能用它将 int 数组初始化为 0 和 -1 之外的其他值。

int main(int argv,char *argc[])
 {
    int array[3][5]={{0,1,2,3,4},{0,1,2,3,4},{0,1,2,3,4}};

    for (int i = 0; i < 3; i++)
     {
        for (int j = 0; j < 5; j++)
         {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    printf("***************************************\n");
    printf("arryNum=%d\n", sizeof(array)/sizeof(array[0]));//共3行
    printf("arryInNum=%d\n", sizeof(array[0])/sizeof(int));//每行共5列
    printf("sizeof(array)=%d\n", sizeof(array));
    printf("sizeof(array[0])=%d\n", sizeof(array[0]));
    printf("sizeof(array[0])*3=%d\n", sizeof(array[0])*3);
    printf("addres  array=%d,array[0]=%d,array[0][0]=%d\n", array,array[0],&array[0][0]);
    printf("***************************************\n");
    // 使用memset将二维数组清零,正确
    memset(array, 0, sizeof(array));
    
    // 打印清零后的二维数组
    for (int i = 0; i < 3; i++)
     {
        for (int j = 0; j < 5; j++)
         {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
  
    printf("***************************************\n");
    //错误
    memset(array, 5, sizeof(array));
    
    // 打印清零后的二维数组
    for (int i = 0; i < 3; i++)
     {
        for (int j = 0; j < 5; j++)
         {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
   printf("***************************************\n");
        // 使用memset将二维数组清零,正确
    memset((char *)array, 0, sizeof(array));
    
    // 打印清零后的二维数组
    for (int i = 0; i < 3; i++)
     {
        for (int j = 0; j < 5; j++)
         {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }   
    printf("***************************************\n");
        //错误
    memset((char *)array, 0x000005, sizeof(array));
    
    // 打印清零后的二维数组
    for (int i = 0; i < 3; i++)
     {
        for (int j = 0; j < 5; j++)
         {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

测试结果

在这里插入图片描述

注意事项

memset 函数是按字节对内存块进行初始化的。
对于 char 型的数组,可以将其初始化为任意一个字符。
但对于 int 型的数组,由于 memset 函数按字节对内存块进行初始化,所以不能用它将 int 数组初始化为 0 和 -1 之外的其他值。

文章来源:https://blog.csdn.net/weixin_46158019/article/details/135064905
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。