二维数组传参的本质

简介: 二维数组传参的本质

一:二维数组的理解

二维数组的每一行可以看成一个一维数组,这个一维数组可以看成二维数组的一个元素,所以二维数组可以看成是一维数组的数组,一个元素代表一个一维数组

二维数组也是数组,数组名表示首元素的地址,就是第一行的地址,也就是一个一维数组的地址。

二:二维数组传参的本质

二维数组也是数组,数组名表示首元素的地址,就是第一行的地址,也就是一个一维数组的地址。

二维数组传参本质上也是传递了地址,传递的是第一行这个一维数组的地址,

三:二维数组传参应用

#include <stdio.h>
void test(int(*p)[5], int c, int r)//形参部分应该用数组指针接收
{
  int i = 0;
  for (i = 0; i < c; i++)
  {
    int j = 0;
    for (j = 0; j < r; j++)
    {
      //printf("%d ", *(*(p + i) + j));
      // p+i表示第i行的数组地址,
      // *(p+i)表示第i行数组的全部元素,也就表示数组名
      // *(p+i)+j表示该一维数组下第j个元素的地址
      //printf("%d ", p[i][j]);
      printf("%d ", (*(p + i))[j]);
    }
    printf("\n");
  }
}
int main()
{
  int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
  test(arr, 3, 5);//数组名表示首元素的地址,也就是第一行的地址
  return 0;
}
#include <stdio.h>
void test(int arr[3][5], int c, int r)//形参部分应该用数组指针接收
{
  int i = 0;
  for (i = 0; i < c; i++)
  {
    int j = 0;
    for (j = 0; j < r; j++)
    {
      //printf("%d ", *(*(arr + i) + j));
      //printf("%d ", arr[i][j]);
      printf("%d ", (*(arr + i))[j]);
    }
    printf("\n");
  }
}
int main()
{
  int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
  test(arr, 3, 5);//数组名表示首元素的地址,也就是第一行的地址
  return 0;
}






目录
相关文章
|
8月前
|
存储 编译器 C语言
函数指针&&数组指针&&数组传参的本质&&字符指针(进阶篇)
函数指针&&数组指针&&数组传参的本质&&字符指针(进阶篇)
146 0
|
7月前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
|
8月前
|
存储 C语言
C语言中向函数传递二维数组的技术详解
C语言中向函数传递二维数组的技术详解
321 0
|
8月前
|
存储 C语言 索引
指针详解(const、指针运算、数组名的理解、传址调用和传值调用、一维数组的本质​)(一)
指针详解(const、指针运算、数组名的理解、传址调用和传值调用、一维数组的本质​)(一)
一维数组传参的本质
一维数组传参的本质
52 0
|
存储 小程序 编译器
数组传参不理解?(数组传参的本质)
数组传参不理解?(数组传参的本质)
113 0
数组作为函数参数传参&数组名到底代表什么意义?
数组作为函数参数传参&数组名到底代表什么意义?
|
程序员 C语言
一维数组传参问题
一维数组传参问题
104 0
|
C语言
深度理解C语言四——指针的进阶二(函数指针,函数指针数组,一维、二维数组传参,指针传参)
深度理解C语言四——指针的进阶二(函数指针,函数指针数组,一维、二维数组传参,指针传参)
140 0
|
存储 C语言
C语言程序入门——初识一维、二维数组 与 函数参数定义概念1.1.3(定义、初始化、引用、类型)
类型名 数组名 [数组长度];例如: int a [10] 代表整型数组,数组变量名称为“a”,一共有10个整型元素。数组是具有相同类型数据的集合,其中的数据按照一定的顺序排列存放引用数组元素要指定其下标,通俗点就是:说明要第几个数字int main(){return 0;}例如下标为3,即元素a[3]数值为2注:数组计数取值范围是【0,数组长度-1】,而不是从1开始。即上方最后一位只有a[9],而不是a[10]二维数组是最常见的多维数组,主要表示二维表和矩阵。......

热门文章

最新文章