本篇文章给大家谈谈c语言规定数组元素做实参时,以及数组元素可以用作函数实参,不能用作形参对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、数组作为实参和形参的形式是怎样的?2、C语言数组元素作函数实参3、C语言关于一维数组做实参的问题4、c语言规定,数组名做实参时,它和对应形参之间的数据传递方式是�5、C语言中,数组名作为函数调用的实参时,下面叙述正确的是()。
数组作为实参和形参的形式是怎样的?
两者都可以,可以用下面的程序展示。
#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、在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作函数参数时,不是进行值的传送,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素。
因为实际上形参数组并不存在,编译系统不为形参数组分配内存。那么,数据的传送是如何实现的呢?在我们曾介绍过,数组名就是数组的首地址。
因此在数组名作函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
注意:
数组有两个特殊的性质。一是不能复制数组;二是使用数组名字时,数组会自动转化为指向其第一个元素的指针。由于数组不能复制,所以无法编写使用数组类型形参的函数,因为数组会被自动转化为指针。
C语言数组元素作函数实参
这里的 if(max(m,a[i])m) 规范写法后面那个分号应该去掉的
这个程序求的是输入的是个int类型数字的最大值,m = a[0]是把第一个数的值赋给变量m,然后拿第二个跟它对比,if(max(m,a[i])m)这句里面的max(m,a[i])是对比m与它的下一个数的大小,max(m,a[i])m则是把调用函数返回的值跟原来的m作比较,如果符合max(m,a[i])m的条件,m = max(m,a[i])就把调用函数返回的值赋给m,n = i “i”是当前最大的那个数的在数组中的位置。
只是大于零是不行的,因为这里要求最大的那个数,你输入的数字肯定全部大于或等于零的,如果改成if(max(m,a[i])0)是一个接着一个作比较,n = i要执行10次,也是可以得到正确答案,但是这会增大系统开销;如果是if(max(m,a[i])m)这样,那么最大的数在第几位,n = i就执行多少次,总的执行次数小于等于10.安效率来算后者较可观。时间复杂度较低。
C语言关于一维数组做实参的问题
参数的两种形式:
1、传值:形参只是实参的一个副本,它只存在被调函数中,在被调函数中对形参的改变不会影响实参的值。
2、传址:形参是实参的一个地址,在被调函数中对形参的改变会影响实参的值。
在c语言中,简单变量默认是传值,而数组默认是传址。
所以出现你所说的一系列怪现象。
好好想一下,若还不明白请留言。
c语言规定,数组名做实参时,它和对应形参之间的数据传递方式是�
c语言规定,数组名做实参时,它和对应形参之间的数据传递方式是
把实参数组的首地址单向传递给形参。
C语言中,数组名作为函数调用的实参时,下面叙述正确的是()。
正确的
B
例如:
f(int data[]);
f(int *data);
其实是等价的,都是一个指针传递。上面两种无论那种都可以传递一个数组名,作为实参。
实参传递给的数组名,就是数组的首地址。
因此通过数组名,传递其实就是把数组的首地址给了形参,因此通过地址就可以改变实参数组相应的值。
关于c语言规定数组元素做实参时和数组元素可以用作函数实参,不能用作形参的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。