c语言二维数组参数
Ⅰ 关于c语言二维数组作为参数
你在这里使用指向整数的指针去访问一个二维,不是不可以,但是前提是这里的size,必须与N的值完全相等。这里出错的原因就在于你程序的N=10,而size却等于3。你试一下定义N=3,看看怎么样。
Ⅱ C语言怎么以二维数组作为参数传递的问题
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidfun(intx[][3])
{
inti,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%d",x[i][j]);
}
printf(" ");
}
}
intmain()
{
inta[2][3]={1,2,3,4,5,6};
fun(a);
return0;
}
定义形参的时候定义列的数目即可,其实就算你随便定义行和列的大小也可以运行,只要将数组地址传进去即可
Ⅲ c语言中怎么用二维数组作为函数参数
C语言中
指针做函数参数传递二维数组有两种基本方法:1、传递“数组指针”<pre
t="code"
l="cpp">#include
<stdio.h>
void
output(
int
(*pa)[3],
int
n
)//这个函数只能输出n行3列的二维数组
{
int
i,j;
for(
i=0;i<n;i++
){
for(
j=0;j<3;j++
)
printf("%d
",
pa[i][j]
);
printf("\n");
}
}
void
main()
{
int
a[2][3]={
{1,2,3},
{4,5,6}
};
output(a,2);
}2、传递“指针数组”
先将二维数组的行指针存储到一个指针数组中,再将指针数组传递到子函数中去。<pre
t="code"
l="cpp">#include
<stdio.h>
void
output(
int
*pa[],
int
row,int
col
)
//这个函数更通用,但调用前,要做好准备工作。
{
int
i,j;
for(
i=0;i<row;i++
){
for(
j=0;j<col;j++
)
printf("%d
",
pa[i][j]
);
printf("\n");
}
}
void
main()
{
int
a[2][3]={
{1,2,3},
{4,5,6}
};
int
i;
int
*pa[2];
for(
i=0;i<2;i++
)
pa[i]=a[i];
output(pa,
2,
3);
}
Ⅳ C语言中如何将二维数组作为函数的参数传递
函数原型 type fun (type (name*)[size])
type是你要定义的类型,fun是函数名,name是在函数中二维数组的名字,
size是二维数组第2维的长度。
这样调用这个函数只需要把二维数组函数名传递就可以了。
Ⅳ c语言c++语言如何用二维数组做形参
C/C++中,二维数组的第一维的每一个元素都是一维数组。所以,用指向一维数组的指针或用第一维维数空缺的二维数组作为函数的形式参数都能达到目的。设处理数组为int型,举例代码如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
voidmyprint(int(*p)[5]){//p是指向有5个int型元素的一维数组的指针
//voidmyprint(intp[][5]){//这样写效果是一样的
inti,j;
for(i=0;i<3;i++){
for(j=0;j<5;printf("%3d",p[i][j++]));
printf(" ");
}
}
intmain(void){
inta[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
myprint(a);
return0;
}
Ⅵ C语言中如何将二维数组作为函数的参数传递
在C语言中可以用二维数组作为实参或者形参。
1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:
voidf(intarray[3][10]);//正确
voidf(intarray[][10]);//正确
上面的两种二维数组形参表示都是正确的。
2、函数中用二维数组作为形参,不能把第2维或者更高维的大小省略,如下面的定义是不合法的:
voidf(intarray[][]);//错误
因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列,不能只指定一维而不指定第二维,下面写法是错误的:
voidf(intarray[3][]);//错误
3、二维数组作为实参传递时,必须保证实参第2维的维数与形参第2维的维数相同,因为必须要保证形参和实参的数据类型一致。比如定义如下函数:
voidf(intarray[][10]);
可以将如下数组传递给函数f。
inta[2][10]={1,2,3,4};
intb[4][10]={1};
Ⅶ C语言 二维数组传递参数
二维数组传递给函数的时候,有两种方式,一种是a[][6],一种是(*a)[6],这里的6是不能省略的,不然编译器不知道如何通过加多少来偏移这个指向数组的指针。
Ⅷ C语言 二维数组做函数参数
#include
<stdio.h>
int
main()
{
void
average(float
*p,float
*p1,int
n);
float
score[3][4]={{65,67,70,80},{80,87,90,81},{90,99,100,98}};
average(score[0],&score[2][3],12);
return
0;
}
void
average(float
*p,float
*p1,int
n)
{
float
sum=0;
for(;p<=p1;p++)
{
sum+=(*p);
}
printf("\t%5.2f",(sum/n));
}
在你给出的程序有两处错误
1,average(*score,12);
这句中你的本意是传输score【0】【0】的地址
但是*score是不行得
2,for(;p<=(p+n-1);p++)这句中
p是指向score【】【】的指针
p++是p向后移时候
(p+n-1)已不再指向score【2】【3】这个数组的末位置
Ⅸ c语言,二维数组如何做参数
如果你的二维数组是确定的,比如本例中的2×2。
那么,需要把shuchu函数改成
voidshuchu(inta[][2],intn,intm)
{
printf("%d",a[n][m]);
}
这样,主函数调用
shuchu(a,1,1);
结果为: