调用函数数组c语言 c语言如何调用数组函数

c语言函数怎么调用数组部分一、数组可定义为全局变量,函数直接调用 。
二、数组可定义为局部变量,再通过参数传递到函数中调用(实参传数组名,表示数组首地址,也可通过指针或数组名 数字来传递数组局部地址) 。
三、main函数想要调用函数返回的数组,可用static定义静态变量或malloc定义动态数组(字符串常量也可返回使用,但局部变量,在函数调用结束会被释放,不能作为返回地址使用) 。
下面是演示代码:
#include stdio.h
#include string.h
#include malloc.h
char str1[]="我是全局变量数组";
char *fun0(char str2[]);
char *fun1();
char *fun2();
int main()
{
char *str3=NULL,*str4=NULL,*str5=NULL;
char str2[]="我是main函数的局部数组变量";
str3=fun0(str2);
printf("str3:%s,fun函数调用结束,我的地址依然可以使用\n",str3);
str4=fun1();
printf("str4:%s,fun函数调用结束,我的地址依然可以使用\n",str4);
str5=fun2();
printf("str5:%s,fun函数调用结束,函数结束不会自动释放\n",str5);
free(str5);
return 0;
}
char *fun0(char s[])
{
static char str3[]="我是fun函数申明的静态数组变量";
printf("str1:%s,fun函数可以直接调用\n",str1);
printf("str2:%s,fun函数通过参数将我的地址传进来\n",s);
return str3;
}
char *fun1()
{
char *str4="我是fun1函数的字符串常量";
return str4;
}
char *fun2()
{
int len;
char sTemp[]="这是一个临时数组,之后用于给mallc申请的地址传值,传递内容为:(我是fun函数通过mallic申请的数组)";
char *str5=NULL;
len=strlen(sTemp 63);
str5=(char *)malloc(sizeof(char)*len 1);
if(!str5)return NULL;
strcpy(str5,sTemp 63);
str5[len-2]=0;
return str5;
}
关于c语言中数组作为函数参数的函数之间调用问题1、新建一个数组作为参数项目,如图所示:
2、添加一个array.c文件,如图所示:
3、包含stdio.h和stdlib.h头文件,如图所示:
4、输入main函数主体及返回值,如图所示:
5、定义一个数组arr , 如图所示:
6、定义一个function函数,如图所示:
7、将数组作为参数传递给function函数 , 如图所示:
8、运行程序,输出结果,如图所示:
c语言数组函数调用程序是什么功能调用函数数组c语言,有什么错误 调用函数数组c语言,请说明 。追问调用函数数组c语言:编写程序求两个整数的所有质公约数、最大公约数、最小公倍数和两个数之差的绝对值 。要求分别编写五个函数分别实现求两个整数的最小质公约数int zgys(int x,int y)、所有质公约数void zgyssz(int a[100],int x,int y)、最大公约数int gys(int x,int y)、最小公倍数int gbs(int x,int y)和两个数之差的绝对值int fun(int x,int y) 。void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i) { a[i]=zgys(x,y); if(a[i]==1)break; x=x/a[i];y=y/a[i]; } } int gys(int x,int y) { int i,j=0,a[100]; void zgyssz(int a[100],int,int); zgyssz(a[100],x,y); { int t=1; for(i=0;ij;i)t=t*a[i]; return t; } }回答:哪些函数是对应的功能 。还有,不是要5个函数吗,怎么只有三个的 。追问:void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i) { a[i]=zgys(x,y); if(a[i]==1)break; x=x/a[i];y=y/a[i]; } } int gys(int x,int y) { int i,j=0,a[100]; void zgyssz(int a[100],int,int); zgyssz(a[100],x,y); { int t=1; for(i=0;ij;i)t=t*a[i]; return t; } } 那三个是 int zgys(int x,int y) { int f=1,i,min; min=xy?x:y; for(i=2;i=min;i) {/*判断i是否是x与y的公约数*/ if(x%i==0y%i==0) f=i; break; } return f; } int gbs(int x,int y) { return x*y/gys(x,y); } int fun(int x,int y) { if(xy)return y-x; else return x-y; } 这三个我做出来了 。回答:直接说 , 哪个函数是什么功能的就行了 。还有就是,哪个函数有问题 。追问:最小公倍数 int gbs(int x,int y){ return x*y/gys(x,y);} 两个数之差的绝对值 int fun(int x,int y){ if(xy)return y-x; else return x-y;} 求两个整数的最小质公约数 int zgys(int x,int y){ int f=1,i,min; min=xy?x:y; for(i=2;i=min;i) {/*判断i是否是x与y的公约数*/ if(x%i==0y%i==0) f=i; break; } return f;} 求两个整数的所有质公约数 void zgyssz(int a[100],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i) { a[i]=zgys(x,y); if(a[i]==1)break; x=x/a[i];y=y/a[i]; }} 求两个整数的最大公约数 int gys(int x,int y){ int i,j=0,a[100]; void zgyssz(int a[100],int,int); zgyssz(a[100],x,y); { int t=1; for(i=0;ij;i)t=t*a[i]; return t; }} 后两个有问题,弄不出来回答:#includestdio.h int n; void main() { int zgys(int x,int y); void zgyssz(int a[ ],int x,int y); int gys(int x,int y); int a,b,c; printf("请输入两个数:"); scanf("%d%d",a,b); c=gys(a,b); printf("%d\n",c); } void zgyssz(int a[ ],int x,int y) { int i; int zgys(int x,int y); for(i=0;i100;i) { a[i]=zgys(x,y); if(a[i]==1)break; x=x/a[i];y=y/a[i]; } n=i 1; } int gys(int x,int y) { int i,j=0,a[100]; void zgyssz(int a[100],int,int); zgyssz(a,x,y); { int t=1; for(i=0;in;i)t=t*a[i];//这里的个数应该是a[i]的个数n 。定为全局变量 return t; } } int zgys(int x,int y) { int f=1,i,min; min=xy?x:y; for(i=2;i=min;i) { if(x%i==0y%i==0) { f=i; break; //break要放里面 。} } return f; }
希望采纳
C语言调用带数组的函数为什么要这么写?首先int max(int a[])这个函数参数的意思是接受一个数组的首地址调用函数数组c语言,也就是说调用的时候必须是地址,也可以说是指针;
如果调用写成max(a[10]) , 这里面a[10]为第十一个元素的值当然不行了,除非调用函数数组c语言你就是把地址放在里面了,强制有的编译器应该可以通过但是会有警告 。
其实理解了的话max(a)和max(a[0])都是可以的,都表示把数组a的首地址传过去 。
可以多去了解一下指针,多上机操作,多练练就会理解的越深 。
c语言怎么调用数组c语言可以用数组元素的方法或指针的方法调用数组 。
int a[100],i;
for(i=0;i100;i)
scanf("%d",a[i]);
for(i=0;i100;i)
printf("%d ",a[i]);
也可以:
int a[100],*p;
for(p=a;pa 100;p)
scanf("%d",p);
for(p=a;pa 100;p)
printf("%d ",*p);
C语言 数组 调用函数对于有数组参数的函数,编译程序要为其开辟相应的内存空间,而程序中两个函数
都有数组参数a[n][m],由于n,m是变量,编译程序并不知道n,m的具体值,所以不能
通过编译 。
修改:
1.在#include下面添加以下伪指令:
#define n 5
#define m 5
2.将函数的参数形式改为:
int sum(int a[n][m]);
void pl(int a[n][m]);
并按此修改程序文件中所有关于这两个函数的申明和调用即可
【调用函数数组c语言 c语言如何调用数组函数】关于调用函数数组c语言和c语言如何调用数组函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读