c语言数组实参函数 c语言实参个数
C语言数组元素作函数实参
#includestdio.h
我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、安阳ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的安阳网站制作公司
int compare(int,int);
void main()
{
int a[10],b[10],i,large=0,small=0,equal=0;
printf("Please input the array a:\n");
for(i=0;i=9;i++)
scanf("%d",a[i]);//加个
printf("Please input the array b:\n");
for(i=0;i=9;i++)
scanf("%d",b[i]);//同上
for(i=0;i=9;i++)
{
if(compare(a[i],b[i])==1)
large=large+1;
else if(compare(a[i],b[i])==-1)
small=small+1;
else if(compare(a[i],b[i])==0)
equal=equal+1;
}
printf("a[i]b[i]:%d times\n",large);
printf("a[i]b[i]:%d times\n",small);
printf("a[i]=b[i]:%d times\n",equal);
if(largesmall)
printf("a[i]b[i]\n");
else if(smalllarge)
printf("a[i]b[i]\n");
else
printf("a[i]=b[i]\n");
getch();
}
int compare(int x,int y)
{
int flag;
if(xy)
flag=1;
else if(xy)
flag=-1;
else
flag=0;
return flag;
}
c语言怎么将数组作为函数参数传入?
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#includestdio.h
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
输出结果为: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
C语言中数组名作为实参传给被调用的函数时,形参获得的是什么
C语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址。
还是用例子说话吧。
#includestdio.h
int *arry(int *a)
{
int *b;
b = a;
int i;
for(i=0;i5;i++)
{
printf("%d",a[i]);
} return b;
}
int main()
{
int a[5] = {1,2,3,4,5};
int *c;
int i;
c = arry(a);
for(i=0;i5;i++)
{
printf("%d",c[i]);
}
}
主要是通过指针把数组,例如main里面的a的地址传入arry函数,然后在arry函数中用一个兼容类型的指针接收地址,然后就可以再这个指针下的地址操作地址上面的数据了。
arry返回的时候也是返回一个指针(地址)。
C语言数组作为形参实参的一些疑惑?
void fun(int arr[], int n);
在函数定义的时候,形参int arr[]不是表示某个元素的值,而是告诉编译器第一个参数是一个数组指针,可以接收实参传过来的数组地址。
实际上以上定义等价于下面的定义。
1.数组里面带元素个数:
void fun(int arr[常数], int n);
这里的常数可以是任意正整数,实际上编译器是会忽略,因为这里只要告诉编译器我接收的是一个数组指针,至于它有多少个元素不关心,因为实参也只是传个地址过来。元素个数由参数二控制。至于为什么要这么约定可以看下面补充说明。
2.void fun(int *arr, int n);
使用指针,这种方式和题目中的方式是最常用的方式,第一种最不常用。
补充说明(为什么数组作为函数参数是传地址,而不是传每个元素):
设想一下,有一个函数如下
int fun(int nums[1000], int size)
它的参数一要处理1000多个元素的数组,如果是传值即每个元素,那在函数体内是不是就得再申请1000多个整数的内存,还需要把值从实参那里复制过来,这是非常耗时间的而且没有必要,因为在内存的某个块已经存放了这些数据。只要告诉放在哪个位置,你函数体去那里找就行了。这里说的就是传地址了,只需要传个数组首地址,然后告诉有多少个元素要处理就OK了。传地址只需要复制地址给形参,相对传每个元素快得多。
网站栏目:c语言数组实参函数 c语言实参个数
文章出自:http://hbruida.cn/article/dohjdsh.html