天天看点

二维数组使用方式

文章目录

    • 二维数组名称
    • 两种特殊情况:
    • 二维数组做函数参数传递方式
    • 数组指针 指针数组 区别
    • 代码示例:

二维数组名称

  • 除了两种特殊情况外,都是指向第一个一维数组的指针

两种特殊情况:

  • sizeof 统计整个二维数组长度
  • 对数组名称取地址 int(*p2)[3][3]=&arr;

二维数组做函数参数传递方式

void printfArray(int p[][3], int row, int col)

void printfArray(int p[3][3], int row, int col)    可读性高

void printfArray(int(*p)[3],int row,int col)
           

数组指针 指针数组 区别

  • 数组指针 是一个指向数组的指针 int(*p)[10];
  • 指针数组 是一个存放指针的数组 int*p[10];

代码示例:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void test01()
{
        //可读性高
        int arr[3][3]=
        {
               {1,2,3},
               {4, 5, 6},
               {7, 8, 9}
        };
        //int arr2[3][3]={1,2,3,4,5,6,7,8,9};
        //int arr[][3]={1,2,3,4,5,6,7,8,9};
        int(*p)[3] = arr;//二维数组名称       指向    第一个一维数组的指针
        //特殊情况
        printf("sizeof arr=%d\n",sizeof(arr));//统计二维数组长度
        int(*p2)[3][3]=&arr;//对数组名取地址  二维数组指针变量
        //访问二维数组中的6
        printf("%d\n",arr[1][2]);//给人看
        printf("%d\n",*(*(arr+1)+2));//给机器
}
//二维数组做韩束参数
//void printfArray(int p[][3], int row, int col)
void printfArray(int p[3][3], int row, int col)
//void printfArray(int(*p)[3],int row,int col)
{
        for (int i = 0; i < row; i++)
        {
               for (int j = 0; j < col; j++)
               {
                       //printf("%d",p[i][j]);
                       printf("%d\n",*(*(p+i)+j));
               }
               printf("\n");
        }
}
void test02()
{
        int arr[3][3] =
        {
               {1,2,3 },
               {4, 5, 6},
               {7, 8, 9}
        };
        printfArray(arr,3,3);
}
int main()
{
        //test01();
        test02();
        return EXIT_SUCCESS;
}
           

更多文章,敬请关注微信公众号:YQ编程

继续阅读