C语言 创建和传递‘以变量定义长宽的二维数组’的两种方法 | 您所在的位置:网站首页 › 怎么初始化一个二维数组 › C语言 创建和传递‘以变量定义长宽的二维数组’的两种方法 |
有时候我们需要先读取用户的输入来定义一个二维数组的规模,但是经常会出现各式各样的问题,尤其是当代码涉及到在函数间传递数组的时候.下面就写两种比较安全妥当的方法. 方法一:通过创建一个二级指针来实现二维数组的传递. 优点:易于理解,而且在函数间传递起来较为方便. 缺点:创建和释放比较麻烦. #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 实验室设备网 版权所有 |