标题:关于二维数组的作为参数的3种传递方式,为什么C++语言下的问题
只看楼主
潺潺的小河
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2019-3-2
结帖率:66.67%
已结贴  问题点数:20 回复次数:2 
关于二维数组的作为参数的3种传递方式,为什么C++语言下的问题
首先 显示C语言编程下的方式
程序代码:
#include <stdio.h>
main() {
        int a[3][4]  = {
                1,2,3,4,
                5,6,7,8,
                9,1,0,6
        };

        display(a, 3, 4);
        show(a, 3, 4);
        print(a, 3, 4);
}

display(int *q, int row, int col) {
        int i,j;
        for (i=0;i<row;i++) {
                for (j=0;j<col; j++) {
                        printf("%d ",*(q + i*col +j));
                }
                printf("\n");
        }
        printf("\n");
}

show(int (*q)[4], int row, int col) {
        int i,j;
        int *p;

        for (i=0;i<row;i++) {
                p = q + i;
                for (j=0;j<col;j++) {
                        printf("%d ", *(p + j));
                }
                printf("\n");
        }
        printf("\n");
}

print(int q[][4], int row, int col) {
        int i,j;
        for (i=0;i<row;i++) {
                for(j=0;j<col;j++) {
                        printf("%d ", q[i][j]);
                }
                printf("\n");
        }
        printf("\n");
}




我再使用了c++语言 来写
程序代码:
#include<iostream>
using namespace std;

voiddisplay(int *q, int row, int col) 
{
        int i,j;
        for (i=0;i<row;i++) {
                for (j=0;j<col; j++) {
                        cout<<*(q + i*col +j);
                }
                
        }
       
};

void show(int (*q)[4], int row, int col) {
        int i,j;
        int *p;

        for (i=0;i<row;i++) {
                p = q + i;
                for (j=0;j<col;j++) {
                         cout<< *(p + j);
                }
                
        }
        
};

void print(int q[][4], int row, int col) {
        int i,j;
        for (i=0;i<row;i++) {
                for(j=0;j<col;j++) {
                       cout<<q[i][j];
                }
               
        }
        

};

int main() 
{
        int a[3][4]  = {
                1,2,3,4,
                5,6,7,8,
                9,1,0,6
        };

        display(a, 3, 4);
        show(a, 3, 4);
        print(a, 3, 4);
}



结果很多在关于数组首地址处 有问题! 我自己学C++ 还没学到数组处,这里是建议我使用vector来完成二维数组的功能吗
搜索更多相关主题的帖子: int row for i++ printf 
2019-08-04 20:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
#include <stdio.h>

void _fun1(int a[2][3])
{
    printf("_fun1:\n");
    int i,j;
    for (i=0; i<2; i++)
    {
        for (j=0; j<3; j++)
            printf("%d ", a[i][j]);
        printf("\n");
    }
    printf("\n");
}

void _fun2(int a[][3], int n)
{
    printf("_fun2:\n");
    int i,j;
    for (i=0; i<n; i++)
    {
        for (j=0; j<3; j++)
            printf("%d ", a[i][j]);
        printf("\n");
    }
    printf("\n");
}

void _fun3(int (*a)[3], int n)
{
    printf("_fun3:\n");
    int i,j;
    for (i=0; i<n; i++)
    {
        for (j=0; j<3; j++)
            printf("%d ", a[i][j]);
        printf("\n");
    }
    printf("\n");
}

void _fun4(int *a, int n, int m)
{
    printf("_fun4:\n");
    int i,j;
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
            printf("%d ", *(a+m*i+j));
        printf("\n");
    }
    printf("\n");
}

void _fun5(int *a[], int n, int m)
{
    printf("_fun5:\n");
    int i,j;
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
            printf("%d ", a[i][j]);
        printf("\n");
    }
    printf("\n");
}

void _fun6(int *a, int n)
{
    printf("_fun6:\n");
    int i;
    for (i=0; i<n; i++)
        printf("%d ", a[i]);
    printf("\n");
}

main()
{
    int a[2][3]= {1,2,3,4,5,6};
    _fun1(a);
    _fun2(a, 2);
    _fun3(a, 2);
    _fun4(*a, 2, 3);
    int i, *b[2];
    for(i=0; i<2; i++)
        b[i] = a[i];
    _fun5(b, 2, 3);   
    _fun6(*a, 6);
}

2019-08-05 04:33
潺潺的小河
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2019-3-2
得分:0 
回复 2楼 吹水佬
您好!我不知道您这<stdio.h>算不算更接入于C还是c++,您能用#include<iostrean> 来完成吗?这样我方便对比我自己程序 出现的错误
2019-08-05 19:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496226-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.691312 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved