关于c语言中数组作为函数参数的函数之间调用问题
发布网友
发布时间:2022-04-25 02:10
我来回答
共5个回答
热心网友
时间:2023-10-20 20:32
1、新建一个数组作为参数项目,如图所示:
2、添加一个array.c文件,如图所示:
3、包含stdio.h和stdlib.h头文件,如图所示:
4、输入main函数主体及返回值,如图所示:
5、定义一个数组arr,如图所示:
6、定义一个function函数,如图所示:
7、将数组作为参数传递给function函数,如图所示:
8、运行程序,输出结果,如图所示:
热心网友
时间:2023-10-20 20:32
这问题说明你对指针的运用还是不熟练的,既然是数组,作为函数参数传递的是数组首地址.
#include <stdio.h>
#include <stdlib.h>
void func1(int *array, int size) {
int i,temp;
for (i=0;i<size;i++) {
scanf("%d",&temp); //利用scanf输入赋值
array[i]=temp;
}
}
//数组array_b根据数组array_a的元素乘以项数获得元素值
void func2(int *array_a,int *array_b, int size) {
int i;
for (i=0;i<size;i++)
array_b[i]=array_a[i] * i;
}
//输出数组元素
void print(int *array, int size) {
int i;
for (i=0;i<size;i++)
printf("%d ",array[i]);
printf("\n");
}
int main(void) {
int size; //数组大小
int i;
int *array_a, *array_b; //声明数组array_a,array_b
scanf("%d", &size);
array_a=malloc(sizeof(int) * size);
array_b=malloc(sizeof(int) * size);
func1(array_a, size);
func2(array_a, array_b, size);
print(array_a,size);
print(array_b,size);
return 0;
}
热心网友
时间:2023-10-20 20:33
这问题说明你对指针的运用还是不熟练的,既然是数组,作为函数参数传递的是数组首地址.
#include
<stdio.h>
#include
<stdlib.h>
void
func1(int
*array,
int
size)
{
int
i,temp;
for
(i=0;i<size;i++)
{
scanf("%d",&temp);
//利用scanf输入赋值
array[i]=temp;
}
}
//数组array_b根据数组array_a的元素乘以项数获得元素值
void
func2(int
*array_a,int
*array_b,
int
size)
{
int
i;
for
(i=0;i<size;i++)
array_b[i]=array_a[i]
*
i;
}
//输出数组元素
void
print(int
*array,
int
size)
{
int
i;
for
(i=0;i<size;i++)
printf("%d
",array[i]);
printf("\n");
}
int
main(void)
{
int
size;
//数组大小
int
i;
int
*array_a,
*array_b;
//声明数组array_a,array_b
scanf("%d",
&size);
array_a=malloc(sizeof(int)
*
size);
array_b=malloc(sizeof(int)
*
size);
func1(array_a,
size);
func2(array_a,
array_b,
size);
print(array_a,size);
print(array_b,size);
return
0;
}
热心网友
时间:2023-10-20 20:34
函数在数组中的调用是以数组名为实参调用的,因为数组名就是数组的首地址,所以说对数组的调用是不需要返回值的,主调函数里面的数组值会随被调函数的形参数组改变而改变,当然这些都是在你以数组名作为实参的前提下
热心网友
时间:2023-10-20 20:34
如果传递值是指针(地址),也就是数组名,虽然在子函数里面,但复制过去的是地址,所以可以对地址里面指向的内容进行操作,也就是一个子函数中可以实现对多个值的操作,如果传递的是内容,则至多通过return 进行一个返回值操作,总之,要看你传什么
关于c语言中数组作为函数参数的函数之间调用问题
1、新建一个数组作为参数项目,如图所示:2、添加一个array.c文件,如图所示:3、包含stdio.h和stdlib.h头文件,如图所示:4、输入main函数主体及返回值,如图所示:5、定义一个数组arr,如图所示:6、定义一个function函数,如图所示:7、将数组作为参数传递给function函数,如图所示:8、运行程序,输出...
关于C语言的二维数组作为函数参数的问题?
int (*arr)[m];所以,传递二维数组作为参数,实际上就是传递了一个指针。将形参的类型定义成int*,再在函数内部转换回指向数组的指针就行了,比如:void f(int *p,int row,int column){ int (*arr)[column]=(int (*)[column])p;//使用二维数组arr } 这样传递参数:int n=5,m=6;int a...
C语言选择题:当数组名作为函数参数时,传递给被调函数的是?
这个选择题的答案是C,即当数组名作为函数参数时,传递给被调函数的是数组的第一个元素(下标为0)的地址。
在C语言中,数组作为参数,是怎样在函数之间传递的啊??
数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
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) { ...
C++指针、数组、引用、变量作函数参数的问题
如有函数声明:void swap(int a,int b); //功能是交换a,b值,但事实上对调用函数没有影响,因为swap函数的局部变量a,b在该函数执行完释放掉了,其值也就丢失了。2. 指针、数组作为参数,这是地址传递,指针和数组可以看成是指向一个或一片连续空间的指针(区别是:一个为变量地址,一个常量...
C语言,数组元素作为参数在自定义函数中交换数值,输出后结果并没有调换...
是的需要引用调用才会改变,void swap2(int &x,int &y)
在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++)f...
在c语言中怎么将数组直接作为函数的参数 比如 int f(int a[10]) 在...
要把数组作为函数的参数,在函数定义的时候,就要在参数列表设置指针,因为数组名就是数组的头指针,在调用时直接把数组名作为函数的参数就好了 比如 int fun(int *a){ //...} int main(){ int a[10];int result=fun(a);return 0;} 这样就好了 通常为了在函数中确保访问数组不越界,在参数...
关于C语言中 将数组作为函数参数的问题 急!
void pick(char a[], int n, char new_a[]){ int i;int j = 0;for ( i = 0; i < n; i++ )if ( a[i] >= '0' && a[i] <= '9' )new_a[j++] = a[i];new_a[j] = '\0';} void main(){ char a[60], i; // 由于字符串最后加了一个‘/0’,故要存...