C语言定义一个函数如果含有数组

比如定义成voidmin(inta[],intx)后面为什么要有intx,这个x什么意思,比如我定义一个函数合并2个数组里面的值可以定义为voidmin(inta[],i... 比如定义成 void min(int a[],int x)后面为什么要有int x,这个x什么意思,比如我定义一个函数合并2个数组里面的值可以定义为 void min(int a[],int b[])么,这样定义是错误的么。 展开
 我来答
被世界LJ
推荐于2017-10-03 · TA获得超过438个赞
知道答主
回答量:96
采纳率:0%
帮助的人:70.3万
展开全部

void min(int a[],int x) //int x是用来标记传过来的数组的长度(即a数组指向的那个数组的长度)。

因为你在函数中计算的时候,a只能当做一个指针来用,没有具体的长度,而且你是int 型的,所以没有标准库函数来求你需要计算的数组的长度,所以你就没法计算。

void min(int a[],int b[])这样计算没错误,但是在计算的时候,你要知道a所指向的数组的长度和b所指向的长度,例如下面的例子:

a数组中有10个数,b数组中有2个数,a数组的大小是40个字节,而指向他的c数组大小只有4个字节,所以当你运算的时候,你要知道c指向的a数组的大小,同理,d也是一样。

#include"stdio.h"
#include"string.h"
void min(int c[],int d[])
{
 int i,j=0;
 int e[100]={0};
 printf("c=%d\n",sizeof(c));
 for(i=0;i<10;i++) //a数组中有10个数
  e[j++]=c[i];
 for(i=0;i<2;i++) //b数组中有2个数
  e[j++]=d[i];
 for(i=0;e[i];i++)
  printf("%d\t",e[i]);
}
main()
{
 int a[10]={1,2,3,4,5,6,7,8,9,10};
 int b[2]={3,4};
 printf("a=%d\n",sizeof(a));
 min(a,b);
}

黄泉的请帖
2013-05-12
知道答主
回答量:31
采纳率:0%
帮助的人:16.9万
展开全部
x表示数组的长度。数组作为参数是按地址传递的,数组名就是数组的首地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友954b442
2013-05-12
知道答主
回答量:29
采纳率:0%
帮助的人:5.5万
展开全部
第一个问题,函数min第二个参数可能是传入数组的长度,如果函数功能没有特别要求,一般可以不用,。第二个问题,你那样定义完全没有问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangziqingnju
2013-05-12 · TA获得超过253个赞
知道答主
回答量:140
采纳率:0%
帮助的人:69.1万
展开全部
定义不会有错误的。在定义函数的时候,你有什么样的参数,你在使用的时候,就给什么样的参数就是了。比如,你定义函数void min(int a[],int b[]),定义数组int c[],int d[],这样就可以调用参数 min(c,d)即可。
还有,其实没有长度这一说,在很多例题里面是长度,但是这不是定势思维。如果你要测数组长度,可以用 X=strlen(a[])就可以拉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怀念那一片蓝63
2013-05-12 · TA获得超过305个赞
知道答主
回答量:46
采纳率:0%
帮助的人:46.4万
展开全部
void min(int a[],int x)中
a[]和x都是你自己定义的
void min(int a[],int b[])在语法上是没有错误的

但是如果你这样传递的话会在子函数里开辟一个新的数组
想要出了这个子函数再利用合并的数组
除非开辟一个全局变量来储存或者不用void
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式