main()
{fun(int *m[3]);
int i,j;
static m[3][3];
printf("please input the ear:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&m[i][j]);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}
printf("\b");
fun(m);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}}
fun(int *m[3])
{int i,j,*p[3];
p=m;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
m[j][i]=*p[i][j];
}
这是我写的,我知道可以用简单的方法做出来,可是我也知道可以用指针,自己初学指针,有些错误,希望高手们不吝赐教~帮我改一下,我想知道哪些语法我用错了,谢谢~!
----------------解决方案--------------------------------------------------------
有高手帮助了!
----------------解决方案--------------------------------------------------------
你这程序写的!哎,真不怎么的!
----------------解决方案--------------------------------------------------------
好不好也先发个不出错的来吧。
----------------解决方案--------------------------------------------------------
我也刚学的,不过我看 那个*m[3]改成(*m)[3]不知道行不行?还有那个fun函数里面的m 不是2唯的首地址么?他可以给*m[3]?
妈的,什么都不会...愁人那
----------------解决方案--------------------------------------------------------
要是会了的话就不贴出来了,当然有错了,我也知道能用简单的方法做~只是我想强化一下自己对指针的用法~3楼4楼为什么要挑刺呢~
----------------解决方案--------------------------------------------------------
结构不清晰~还有那个函数的定义在哪里?我怎么没看见~
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int fun(int *p)
{
int i,j,k;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
k=*p(3*i+j);
*p(3*i+j)=*p(3*j+i);
*p(3*j+i)=k;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d",p++);
return 0;
}
int main(void)
{
int i,j;
int a[3][3];
printf("please input the ear:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
printf(" the new shuzu shi:\n");
fun(a);
return 0;
}
看下这个行不行....
----------------解决方案--------------------------------------------------------
// 此贴本来问什么是倒置,当时我没看代码 ////////////////////////////////////////
//////////////////////////////////////////
/* 修改了2个错误,多次出现 */
/* 搂主的代码,修正后 */
#include<stdio.h>
#include<stdio.h>
void fun(int (*m)[3]); /* 函数原型方在外面看起来方便 */
int main(void)
{
int i,j;
static int m[3][3]; /* 搂主的程序没有 int */
printf("please input the ear:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&m[i][j]);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}
printf("\b");
fun(m);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",m[i][j]);
printf("\n");
}
return 0;
}
void fun(int (*m)[3])
{
int i,j,(*p)[3];
p = m;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
m[j][i]=p[i][j];
}
/* 直接使用 m[3][3] ,但 m[3][3] 必须具有文件作用域,
把 int [3][3]; 放在所有函数原型的上面。
因为楼主使用了 static 我才提醒一下。(不过不建议使用)
void fun_b(void)
{
int i, j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
m[j][i]=p[i][j];
}
*/
/* 运行结果 */
此主题相关图片如下:
/*
int (* m)[3]; // 指向 3 个 int 类型的指针
int * m[3]; // 3 个 int 指针数组
static // 静态存储 //是数组m[3][3]具有函数作用域,空链接,静态存储时期
*/
-
- 楼主用 TC 的吧。
- 最好像我一样的代码风格,不要求4格缩进,但至少需要缩进一下,1格也行啊。
- 函数前请加上返回类型,如:void 、int 、flost。
-
[此贴子已经被作者于2007-11-19 2:17:28编辑过]
----------------解决方案--------------------------------------------------------
不是倒置吧..要是倒置的话.那就更简单了,把下标改下就行了
----------------解决方案--------------------------------------------------------