| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:二维数组和指针作为实参的函数为什么会提示实参和形参不一致
只看楼主 加入收藏
c3242404
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-6-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
二维数组和指针作为实参的函数为什么会提示实参和形参不一致
/*声明一个3*5的数组,输出数组,然后数组的值翻一倍,再输出翻倍后的数组*/
#include <stdio.h>
#define COLS 3;
void show(int b[][5], int n);
void twice(int (*q)[5], int m);

int main (void)
{
    int a[COLS][5] = { {2, 4, 3, 5, 8},
                    {8, 6, 5, 4, 1},
                    {4, 8, 6, 2, 5} };
    int (* p)[5] = a;

    printf("翻倍前:\n");
    show(a, COLS);
    twice(p, COLS);

    return 0;
}


void show(int b[][5], int n)
{
    int i,j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < 5; j++)
            printf("%d ", b[i][j]);
        printf("\n");
    }
    printf("\n");
}

void twice(int (*q)[5], int m)
{
    int k,l;

    printf("翻倍后:\n");
    for(k = 0; k < COLS; k++)
    {
        for(l = 0; l < m; l++)
        {
            *(*(q+k)+l) *= 2;
            printf("%d ", *(*(q+k)+l));
        }
        printf("\n");
    }
    printf("\n");
}
搜索更多相关主题的帖子: include return 
2014-07-14 20:53
xp0213
Rank: 7Rank: 7Rank: 7
来 自:湖北武汉
等 级:黑侠
威 望:1
帖 子:222
专家分:524
注 册:2011-10-26
收藏
得分:20 
#include <stdio.h>
#define COLS 3
void show(int b[][5], int n);
void twice(int (*q)[5], int m);

int main (void)
{
    int a[3][5] = { {2, 4, 3, 5, 8},
                    {8, 6, 5, 4, 1},
                    {4, 8, 6, 2, 5} };
            
                           /*此处删除一行代码,既然把数组起始地址传递过去,那么没必要在定义一个数组指针*/
    printf("翻倍前:\n");
    show(a, COLS);
    twice(a, 5);     /*此处为5,因为是 列*/
                     
    return 0;
}


void show(int b[][5], int n)
{
    int i,j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < 5; j++)
            printf("%d ", b[i][j]);
        printf("\n");
    }
    printf("\n");
}

void twice(int (*q)[5], int m)
{
    int k,l;

    printf("翻倍后:\n");
    for(k = 0; k < COLS; k++)
    {
        for(l = 0; l < m; l++)
        {
            *(*(q+k)+l) *= 2;
            printf("%d ", *(*(q+k)+l));
        }
        printf("\n");
    }
    printf("\n");
}
2014-07-14 22:57
c3242404
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-6-22
收藏
得分:0 
回复 2 楼 xp0213
谢谢了
2014-07-15 19:26
快速回复:二维数组和指针作为实参的函数为什么会提示实参和形参不一致
数据加载中...
 
   



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

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