| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 866 人关注过本帖
标题:传值 引用 传地址调用
只看楼主 加入收藏
yslief
Rank: 5Rank: 5
来 自:水泊
等 级:职业侠客
帖 子:57
专家分:340
注 册:2016-11-14
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
传值 引用 传地址调用
5*5矩阵, 输入数据,  交换m,n行的数据(n,m为输入的数字小于5) ,最后重新输出交换m和n行的矩阵. 但是下面的代码不能达到交换m,n行的目的.
问题应该出在自定义函数fun上, 数据传入的只是形参,请大家帮看看

程序代码:
#include<stdio.h>
int fun(int a[][5], int m, int n);

main()
{
    int i,j,m,n,t;
    int a[5][5];
    printf("请输入5*5行列数据\n");
    
    for(i=0; i<5; i++)
    {
        for(j=0; j<5; j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    
    printf("\n请输入m,n的值:");
    scanf("%d%d", &m, &n);
    
    fun(a, m, n);
    for(i=0; i<5; i++,printf("\n"))
    {
        for(j=0; j<5; j++)
        {
            printf("%d",a[i][j]);
        }
    }
}



int fun(int a[][5] ,int m, int n)
{
    int *p1[5] ;
    p1[0] = a[0];
    int *p2;
    if(m-1>5|| n-1>5)
    {
        return 0;
    }
    
    else
    {
        p2 = p1[m-1];      
        p1[n-1]= p1[m-1];
        p1[m-1]= p2;
        return 1;
    }
}
2016-11-30 00:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:10 
程序代码:
#include <stdio.h>

void fun( int a[][5], size_t m, size_t n );

int main( void )
{
    int a[5][5];
    printf("请输入5*5行列数据\n");
    for( size_t r=0; r!=5; ++r )
        for( size_t c=0; c!=5; ++c )
            scanf( "%d", &a[r][c] );

    size_t m, n;
    printf("\n请输入m,n的值:");
    scanf( "%zu%zu", &m, &n );

    fun( a, m, n );

    for( size_t r=0; r!=5; ++r )
        for( size_t c=0; c!=5; ++c )
            printf( "%d%c", a[r][c], " \n"[(c+1)%5==0] );

    return 0;
}

void fun( int a[][5], size_t m, size_t n )
{
    for( size_t c=0; c!=sizeof(*a)/sizeof(**a); ++c )
    {
        int temp = a[m][c];
        a[m][c] = a[n][c];
        a[n][c] = temp;
    }
}

输入
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
40 41 42 43 44
50 51 52 53 54
1 3

输出
10 11 12 13 14
40 41 42 43 44
30 31 32 33 34
20 21 22 23 24
50 51 52 53 54

2016-11-30 08:30
yslief
Rank: 5Rank: 5
来 自:水泊
等 级:职业侠客
帖 子:57
专家分:340
注 册:2016-11-14
收藏
得分:0 
交换操作是在局部函数进行的,  为什么操作结果还是能影响到主函数
2016-11-30 12:00
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:10 
回复 3楼 yslief
数组作为形参时,就是对数组的引用
2016-11-30 12:15
yslief
Rank: 5Rank: 5
来 自:水泊
等 级:职业侠客
帖 子:57
专家分:340
注 册:2016-11-14
收藏
得分:0 
谢谢大家!
2016-11-30 19:36
快速回复:传值 引用 传地址调用
数据加载中...
 
   



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

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