函数与数组c语言程序 c语言中数组与函数应该注意哪些问题

c语言函数怎么调用数组部分一、数组可定义为全局变量函数与数组c语言程序,函数直接调用 。
二、数组可定义为局部变量,再通过参数传递到函数中调用(实参传数组名,表示数组首地址 , 也可通过指针或数组名 数字来传递数组局部地址) 。
三、main函数想要调用函数返回的数组,可用static定义静态变量或malloc定义动态数组(字符串常量也可返回使用,但局部变量,在函数调用结束会被释放,不能作为返回地址使用) 。
下面是演示代码:
#include stdio.h
#include string.h
#include malloc.h
char str1[]="函数与数组c语言程序我是全局变量数组";
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();
【函数与数组c语言程序 c语言中数组与函数应该注意哪些问题】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语言数组与函数?给你看一下函数与数组c语言程序我函数与数组c语言程序的代码
#includestdio.h
void main(){
int a[10],b[10],i,j,temp;
for(i=0;i10;i){
printf("请输入第%d个数函数与数组c语言程序:",(i 1));
scanf("%d",a[i]);
//保存数组函数与数组c语言程序,因为输入完数组要冒泡排序函数与数组c语言程序,排序后的元素顺序可能和原数组不一样
b[i]=a[i];
}
//冒泡排序,求最大值
for(i=0;i9;i){
for(j=0;j9-i;j){
if(a[j]a[j 1]){//这里控制的升序还是降序,我这是降序
temp=a[j];
a[j]=a[j 1];
a[j 1]=temp;
}
}
}
//查找最大值在原数组的位置
for(i=0;i10;i){
if(b[i]==a[0]){//降序的话最大值是a[0],升序的话最大值是a[9]
break;//一旦找到最大值,马上跳出循环
}
}
printf("最大值是%d , 它在原数组中是第%d个元素!\n",a[0],(i 1));
}
C语言中自定义的函数中有数组,应该如何运用该函数方法
有2
将该数组定义为全局变量,即:
int
g_arr;
void
fun()
{...}
void
main()
{...}
2.将该数组作为函数参数传递到自定义函数里,即:
void
fun(int
arr[])
{...}
void
main()
{
int
arr[10];
fun(arr);
}
C语言数组与函数你的程序:
main()
{
int b[3];
b=pop();
}
int * pop()
{
int a[3],i;//定义的局部变量a[3]在调用完之后自动释放其空间
for(i=0;i3;i)
a[i]=i;
return a;//返回的是指向数组a[3]的地址而不是数组a[3]本身
}
注:既然上面说到调用的方法返回的是指向数组a[3]的地址,所以主函数中b接收的应该是指向数组a[3]的地址,而数组a[3]在方法调用完后又被释放了,所以b接收不到数组a[3] , 故出错 。
正确的程序:
#includestdio.h
main()
{
int b[3];
pop(b,3);
}
void pop(int a[],int n)//该方法传入两个参数,第一个是传入指向数组的地址,第二个参数是传入数组的长度,不需写返回语句return,只需通过指向数组的地址的传入就可以直接将数组b[]的值改变
{
int i;
for(i=0;in;i)
a[i]=i;
}
函数与数组c语言程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言中数组与函数应该注意哪些问题、函数与数组c语言程序的信息别忘了在本站进行查找喔 。

    推荐阅读