//代码1
#includestdio.h
#includestdlib.h?//用于调用函数malloc()
void?pr(int?p[],int?j);
int?main()
{
int?i,j;
int?*a;?//指向动态内存
printf("要输入多少个数据:");
scanf("%d",j);
//创建动态内存
a=(int?*)malloc(j?*?sizeof(int));
if(a?==?NULL)
printf("\n分配动态内存时出错.\n");
exit(1);
}
for(i=0;ij;i++)
scanf("%d",a[i]);
pr(a,j);
//原代码for(int?i=0;ij;i++)
printf("%d?",a[i]);
return?0;
void?pr(int?p[],int?j)
int?i;
for(i=0?;?ij?;?i++)
p[i]=p[i]*p[i];
//
//计算数组buf的大小
j=sizeof(buf)/sizeof(int);
a[i]=buf[i];
printf("原数组里的数据:?");
printf("%d?",buf[i]);
printf("\n");
printf("运算后的数据:?");
c语言可以用数组元素的方法或指针的方法调用数组.
int a[100],i;
for(i=0;i100;i++)
printf("%d ",a[i]);
也可以:
int a[100],*p;
for(p=a;pa+100;p++)
scanf("%d",p);
printf("%d ",*p);
来传送子函数中的数组有多种方法——可以通过函数返回值返回地址传递数组;也可以通过函数输入参数来传递数组;还可以通过全局变量来传递数组.
子函数本身可以直接在作用域中进行调用.
①.、通过函数返回值返回地址传递数组.
声明函数时需要声明函数返回值类型为对应数组的地址,此时可以返回数组的地址,结合数组元素的地址关系可以传递整个数组,同时可以根据数组的特性传递多个参数.
声明函数时提供空输入参数,调用函数时提供目标数组,即可以通过该数组调用子函数中的数组,该方法也可以用于传递多个参数.
声明全局变量用于存储子函数中的数组,此时可以在全局变量作用域中读取调用子函数的数组.
注意:子函数是C语言模块化编程思想的核心,其方法是通过输入接口和输出接口实现对黑盒的调用,故对其内部数据的输入和调用也需要通过输入接口、输出接口和程序的公共区域实现.
调用时:
sum=fun1(a[N]);
printf("sum=%d\n",sum);
定义中:
int fun1(int a[N],int i)
int s=0;
for(i=0;iN;i++)
s=s+a[i];
return(s);
注意定义的函数int fun1(int a[N],int i),在调用函数的时候语法是sum=fun1(int a[N],int i);错误在于调用函数时()内的参数应该和定义时一样
因为main()函数中的function_a函数声明和实际的情况不一样,真实情况是该函数有三个参数,而你却将其声明为没有参数,所以在调用时,传入参数会有警告.
由于function_a的定义在main()之前,所以去掉主函数中的声明即可,或者将声明改为正确形式.
不能够返回整个数组,只能返回数组中的某个值.如果数组在函数内部定义,也不能直接返回数组名(临时变量在函数结束时会释放).一般写程序不会把数组作为返回值返回,想要返回整个数组,可以用指针来实现.
以上就是土嘎嘎小编为大家整理的c语言函数调用任意数组相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!