❶ c语言中数组名作为函数参数
要将数组长度作为一个参数传给average函数,不能在average函数内部通过int arrLen = sizeof(a) / 4;来计算数组长度。因为float average(float a[10])就相当于float average(float *a) ,所以sizeof(a)恒等于4,sizeof(a) / 4恒等于1。
应该这样:
float average(float a[10],int arrLen) {
float sumSco = 0;
for (int i = 0; i < arrLen; i++)
{
sumSco += a[i];
}
return sumSco / arrLen;
}
❷ 在c语言中怎么将数组直接作为函数的参数 比如 int f(int a[10]) 在调用函数时会显示
要把数组作为函数的参数,在函数定义的时候,就要在参数列表设置指针,因为数组名就是数组的头指针,在调用时直接把数组名作为函数的参数就好了
比如
int fun(int *a)
{
//...
}
int main()
{
int a[10];
int result=fun(a);
return 0;
}
这样就好了
通常为了在函数中确保访问数组不越界,在参数列表还要假如数组的长度,方便函数访问数组
如下:
int fun(int *a,int length)
{
int i,sum=0;
for(i=0;i<length;i++)
{
//...对数组的每个元素进行访问
sum+=a[i];//把全部元素加起来
}
return sum;
}
int main()
{
int i,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
int result=fun(a,10);
printf("总和为:%d\n",result);
return 0;
}
❸ c语言中数组作为函数参数的问题。
E
数组作为参数不需要标示大小
A
数组参数在函数中要被隐式转换为一个常量指针在使用
F
定义数组值为int
a[i]
这里的i应该是一个编译时期决定大小常量表达式。
❹ C语言数组作为参数
int Arrage(int iArrage[10])这个函数的参数是iArrage,这是一个int型指针,所以要传一个int型指针进去,液姿凳比如main函数中的iStudent就是个闹旅int型指针册档
❺ C语言中如何将二维数组作为函数的参数传递
在c语言中可以用二维数组作为实参或者形参。
1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:
void f(int array[3][10]); //正确
void f(int array[][10]); //正确上面的两种二维数组形参表示都是正确的。
2、函数中用二维数组作为形参,不能把第2维或者更高维的大小省略,如下面的定义是不合法的:
void f(int array[][]); //错误
因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列,不能只指定一维而不指定第二维,下面写法是错误的:
void f(int array[3][]); //错误 3、二维数组作为实参传递时,必须保证实参第2维的维数与形参第2维的维数相同,因为必须要保证形参和实参的数据类型一致。比如定义如下函数:
void f(int array[][10]);可以将如下数组传递给函数f。
int a[2][10] = {1,2,3,4};
int b[4][10] = {1};
❻ 在C语言中,数组作为参数,是怎样在函数之间传递的啊
数组作为参数是按地址传递的
数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
❼ c语言 数组作为参数传入函数,在函数处理完成之前,数组内容在函数外部被清空,函数处理是否会受到影响。
数组名就是一个指针常量,传入函数的实际上是内存空间的首地址,在多进程(或多亮改线程)运行环境并且共同操作同一块内存空间的情况下,会出现题目丛基所说的渗键谨情况,答案是肯定的,会受影响。
❽ C语言中数组作为函数参数
C中数组名代表该数组的首地址,
char
s[]="abc";
s代表的就是‘a’在内存中的地址
以地址作参数
,实参和形参同时改变
❾ C语言中,数组作为参数,怎样在函数之间传递的
很简单的,数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址 .给个程序看看
#include<stdio.h>
#define N 3
int array[N][N];
void main()
{
//在主函数内声明被调函数
void convert(int array[][3]);
int i,j;
printf("输入数组:\n");
for(j=0;j<N;j++)
for(i=0;i<N;i++)
scanf("%d",&array[i][j]);
printf("\n");
for(j=0;j<N;j++)
{
for(i=0;i<N;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//调用矩阵转置函数
convert(array);
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)//设置数组中转置矩阵元素交换
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
❿ c语言中怎么用二维数组作为函数参数
二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如:
因为从实参传递来的是数组的起始地址,如果在形参中不说明列数,编译器将无法定位元素的的位置。