为了账号安全,请及时绑定邮箱和手机立即绑定

如何将多维数组传递给C和C ++中的函数

如何将多维数组传递给C和C ++中的函数

C++ C
HUX布斯 2019-08-27 17:44:25
如何将多维数组传递给C和C ++中的函数#include<stdio.h>void print(int *arr[], int s1, int s2) {     int i, j;     for(i = 0; i<s1; i++)         for(j = 0; j<s2; j++)             printf("%d, ", *((arr+i)+j));}int main() {     int a[4][4] = {{0}};     print(a,4,4);}这适用于C,但不适用于C ++。错误:cannot convert `int (*)[4]' to `int**' for argument `1' to  `void print(int**, int, int)'为什么它在C ++中不起作用?需要做出哪些改变?
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

#include<stdio.h>void print(int arr[][4], int s1, int s2) {
    int i, j;
    printf("\n");
    for(i = 0; i<s1; i++) {
        for(j = 0; j<s2; j++) {
            printf("%d, ", *((arr+i)+j));
        }
    }
    printf("\n");}int main() {
    int a[4][4] = {{0}};
    print(a,4,4);}

这将工作,我的工作意味着编译。@AndreyT解释了为什么你的版本不能正常工作。

这是你应该传递二维数组的方法。

为清楚起见,您还可以在函数声明中指定两个大小:

#include<stdio.h>void print(int arr[4][4], int s1, int s2) {
    int i, j;
    printf("\n");
    for(i = 0; i<s1; i++) {
        for(j = 0; j<s2; j++) {
            printf("%d, ", *((arr+i)+j));
        }
    }
    printf("\n");}int main() {
    int a[4][4] = {{0}};
    print(a,4,4);}

两者都有效。

您还应该更改*((arr+i)+j)a[i][j](最好)或者*(*(arr+i)+j)如果您打算访问j行的第th个元素i


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 528 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信