C语言定义一个函数如果含有数组
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);
}
还有,其实没有长度这一说,在很多例题里面是长度,但是这不是定势思维。如果你要测数组长度,可以用 X=strlen(a[])就可以拉
a[]和x都是你自己定义的
void min(int a[],int b[])在语法上是没有错误的
但是如果你这样传递的话会在子函数里开辟一个新的数组
想要出了这个子函数再利用合并的数组
除非开辟一个全局变量来储存或者不用void