C语言 创建和传递‘以变量定义长宽的二维数组’的两种方法 您所在的位置:网站首页 怎么初始化一个二维数组 C语言 创建和传递‘以变量定义长宽的二维数组’的两种方法

C语言 创建和传递‘以变量定义长宽的二维数组’的两种方法

2024-07-07 23:01| 来源: 网络整理| 查看: 265

有时候我们需要先读取用户的输入来定义一个二维数组的规模,但是经常会出现各式各样的问题,尤其是当代码涉及到在函数间传递数组的时候.下面就写两种比较安全妥当的方法.

方法一:

通过创建一个二级指针来实现二维数组的传递. 优点:易于理解,而且在函数间传递起来较为方便. 缺点:创建和释放比较麻烦.

#include #include void f(int **a) { printf("f(int **a) is right.\n"); } int main() { int height = 0, width = 0; printf("height width: "); scanf("%d%d", &height, &width); int **a = (int **)malloc(sizeof(int *) * height); for (int i = 0; i a[i][j] = 0; printf("%d ", a[i][j]); } puts(""); } f(a); for (int i = 0; i int height = 0, width = 0; printf("height width: "); scanf("%d%d", &height, &width); int(*a)[width] = (int(*)[width])malloc(sizeof(int) * height * width); for (int i = 0; i a[i][j] = 1; printf("%d ", a[i][j]); } puts(""); } f(width, a); free(a); } 错误示范: #include int main() { int height = 0, width = 0; scanf("%d%d",&height,width); int a[height][width]; }

通过以上代码创建二维数组看似可行,实则不然,因为创建的数组其实根本就不是二维数组,如图,显示a: [0],而非我们想要的a: int[3][3]. 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有