数组与函数c语言 数组函数C语言

关于c语言和数组和函数

//考点是数组作为参数入参,第一个参数为数组指针,第二个参数为数组长度,第三个参数为被成书

成都做网站、成都网站设计,成都做网站公司-创新互联建站已向上1000+企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。

void func(int a[], int size, int x){

for(int i = 0; i  size; i++){

a[i] *= x;

printf("%d ", a[i]);

}

printf("\n");

}

int main(){

int a[4], x;

scanf("%d,%d,%d,%d", a[0], a[1], a[2], a[3]);

scanf("%d", x);

func(a, 4, x);

return 0;

}

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语言中自定义的函数中有数组,应该如何运用该函数

方法

有2

将该数组定义为全局变量,即:

int

g_arr;

void

fun()

{...}

void

main()

{...}

2.将该数组作为函数参数传递到自定义函数里,即:

void

fun(int

arr[])

{...}

void

main()

{

int

arr[10];

fun(arr);

}

c语言数组与函数?

给你看一下我的代码

#includestdio.h

void main(){

int a[10],b[10],i,j,temp;

for(i=0;i10;i++){

printf("请输入第%d个数:",(i+1));

scanf("%d",a[i]);

//保存数组,因为输入完数组要冒泡排序,排序后的元素顺序可能和原数组不一样

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语言数组与函数

你的程序:

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语言
网站网址:http://ybzwz.com/article/dodchdj.html