数组作为实参和形参的形式是怎样的?

形参的形式:数组名()那数组作为实参放在函数里,是以数组名表示还是以数组名加()表示,还是两者都行?... 形参的形式:数组名()
那数组作为实参放在函数里,是以数组名表示还是以数组名加()表示,还是两者都行?
展开
 我来答
博学小赵爱生活
高能答主

2020-04-03 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:456 获赞数:111888

向TA提问 私信TA
展开全部

两者都可以,可以用下面的程序展示。

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

void sortArray(int *a, int num)

//void sortArray(int a[], int num)

{

for (int i = 0; i < num; i++)

{

for (int j = i + 1; j < num; j++)

{

if (a[i] < a[j])

{

int tem = a[i];

a[i] = a[j];

a[j] = tem;

}

}

}

}

void printfArray(int *a, int num)

//void printfArray(int a[], int num)

{

for (int i = 0; i < num; i++)

{

printf("%d\t", a[i]);

}

printf("\n\n");

}

/*

1、数组作为参数时,本质是指针,这是C语言的特点

2、数组作为参数时,里面的数字有误均可,对程序不影响

*/

void main()

{

int a[] = { 1, 2, 4, 5, 2, 53, 536, 263, 726, 37, 3 };

int num = sizeof(a) / sizeof(a[0]);

printf("数组排序前打印:\n");

printfArray(a, num);

//开始对数组进行排序

sortArray(a, num);

printf("数组排序后打印:\n");

printfArray(a, num);

system("pause");

}

扩展资料:

用数组名作函数参数与用数组元素作实参有几点不同。

1、用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。

2、在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作函数参数时,不是进行值的传送,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素。

因为实际上形参数组并不存在,编译系统不为形参数组分配内存。那么,数据的传送是如何实现的呢?在我们曾介绍过,数组名就是数组的首地址。

因此在数组名作函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。

注意:

数组有两个特殊的性质。一是不能复制数组;二是使用数组名字时,数组会自动转化为指向其第一个元素的指针。由于数组不能复制,所以无法编写使用数组类型形参的函数,因为数组会被自动转化为指针。




kaixingui2012
推荐于2017-09-27 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6459万
展开全部
写个例子去理解一下吧:
#include <stdio.h>
void test( int aiNum[] , int len ) //形参 ,也可以这样:void test( int *aiNum , int len )
{
int i;
for( i=0;i<len;i++)
printf( "num[%d]=%d\n" , aiNum[i] );
}
int main( void )
{
int aiN[5]={1,2,3,4,5};
test( ai , 5 ); //实参:数组名,目的是将数组的首地址传给test函数
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式