首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言 定义函数有关问题 附代码

2012-11-15 
C语言定义函数问题附代码~#include stdio.hint exchange(int a[i][j]){for (i0i3i++)for(j0j3j+

C语言 定义函数问题 附代码~
#include <stdio.h>
int exchange(int a[i][j])
{for (i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",a[j][i]); //交换位置
return 0;}
int main ()
{int b[3][3]={{1,2,3},{4,5,6},{7,8,9}};
exchange(b[3][3]);
return 0;}

3*3 二维数组 行列交换位置~ 哪里错了?3Q

[解决办法]
数组作为参数可以看做指向其首元素的指针
二维数组可以看作是一个一维数组,它的每个元素都是一个一维数组,作为参数传递时,它可以看作是一个指向一维数组的指针,这个指针指向这个二维数组的第一个一维数组
void func( int a[10] )和void func( int a[10000] )没有任何区别,它们的参数都是两个指向int的指针a

因此,传递二维数组作为函数参数时,这个二维数组的第二维长度必须在代码里写明
因为本质上,这个参数是“一个指向一维数组的指针,这个一维数组的长度是这个二维数组的第二维”。编译时如果第二维不确定,就不能确定每个元素的偏移量。

此外,定义数组后,数组名可以看做指向其首元素的指针,也只能这样看待,除了定义时的初始化以外,数组不能整体操作
b[3][3]指的是b这个二维数组的第4行第4列的元素,而不是一个维数都是3的二维数组

综上所述,建议楼主不要想当然,不要自己发明新语法,建议楼主从头复习基础知识
[解决办法]
[code=C/C++][/code]
#include <stdio.h>

void Daozhi(int b[][3])
{
int i,j,temp;
for(i=0; i<3; i++)
{
for(j=0; j<=i; j++)
{
temp = b[i][j];
b[i][j] = b[j][i];
b[j][i] = temp;
}
}
}

int main()
{
int b[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
Daozhi(b);
int i,j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf("%d ",b[i][j]);

putchar(10);
return 0;
}
[解决办法]
字符,你为何定义为float类型,浮点数?
[解决办法]

探讨

#include <stdio.h>
int exchange(int a[20])

int i;
for( ;i>=0;i--)
{printf("%c",a[i]); //字符倒置
printf("\n");}
return 0;
}
int main()
{int i;
float str[20];
scanf("%s",&amp;str);……

热点排行
Bad Request.