注册 登录
编程论坛 C++教室

数组的转置运行错误求大神指教

zhengchen080 发布于 2013-08-08 19:22, 592 次点击
#include<stdio.h>
int huhuan(int a[3][3])
{
    int i,j,b[3][3]={0};
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
            b[j][i]=a[i][j];
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
            printf("%d ",b[i][j]);
        printf("\n");
    }
}
main()
{
    int a[3][3]={1,2,3,4,5,6,7,8,9};
    huhuan(a[3][3]);
}
6 回复
#2
未未来2013-08-08 19:41
可能我看的C++书跟你的不一样。
你的main函数前面应该有个int
最后也要有个返回值 return 0;

按照你的写法  我的编译器报错是 [Error] C:\Users\pa\Documents\C-Free\Temp\未命名10.cpp:20: error: invalid conversion from `int' to `int (*)[3]'
我想你翻译一下这句话。
#3
zhengchen0802013-08-08 19:48
回复 2楼 未未来
把整型转变成了指向整型数据的指针
#4
未未来2013-08-08 19:58
回复 3楼 zhengchen080
所以错误就是
你在这huhuan(a[3][3]);传递给函数的是一个数而不是一个指针,怎么改应该知道吧
#5
zhengchen0802013-08-08 20:13
回复 4楼 未未来
传给函数的是地址而不是值
#6
zhengchen0802013-08-08 20:21
回复 4楼 未未来
我知道了应该把huhuan(a[3][3])改成huhuan(a)
a是数组的地址把地址传过去
#7
rjsp2013-08-09 08:46
程序代码:

#include <stdio.h>

void transposition( int a[3][3] )
{
    for( size_t r=0; r<3; ++r )
    {
        for( size_t c=r+1; c<3; ++c )
        {
            int tmp = a[r][c];
            a[r][c] = a[c][r];
            a[c][r] = tmp;
        }
    }
}

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

    // 转置
    transposition( a );
    // 输出
    for( size_t r=0; r<3; ++r )
    {
        for( size_t c=0; c<3; ++c )
            printf( " %d", a[r][c] );
        printf( "\n" );
    }

    return 0;
}
1