C语言带数组表示法的函数 c语言带数组表示法的函数有哪些

C语言中自定义的函数中有数组,应该如何运用该函数

方法

成都创新互联公司专注于铁西网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供铁西营销型网站建设,铁西网站制作、铁西网页设计、铁西网站官网定制、微信平台小程序开发服务,打造铁西网络公司原创品牌,更为您提供铁西网站排名全网营销落地服务。

有2

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

int

g_arr;

void

fun()

{...}

void

main()

{...}

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

void

fun(int

arr[])

{...}

void

main()

{

int

arr[10];

fun(arr);

}

C语言调用带数组的函数为什么要这么写?

首先int max(int a[])这个函数参数的意思是接受一个数组的首地址,也就是说调用的时候必须是地址,也可以说是指针;

如果调用写成max(a[10]),这里面a[10]为第十一个元素的值当然不行了,除非你就是把地址放在里面了,强制有的编译器应该可以通过但是会有警告。

其实理解了的话max(a)和max(a[0])都是可以的,都表示把数组a的首地址传过去。

可以多去了解一下指针,多上机操作,多练练就会理解的越深。

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语言定义一个函数如果含有数组

void min(int a[],int x) //int x是用来标记传过来的数组的长度(即a数组指向的那个数组的长度)。

因为你在函数中计算的时候,a只能当做一个指针来用,没有具体的长度,而且你是int 型的,所以没有标准库函数来求你需要计算的数组的长度,所以你就没法计算。

void min(int a[],int b[])这样计算没错误,但是在计算的时候,你要知道a所指向的数组的长度和b所指向的长度,例如下面的例子:

a数组中有10个数,b数组中有2个数,a数组的大小是40个字节,而指向他的c数组大小只有4个字节,所以当你运算的时候,你要知道c指向的a数组的大小,同理,d也是一样。

#include"stdio.h"

#include"string.h"

void min(int c[],int d[])

{

int i,j=0;

int e[100]={0};

printf("c=%d\n",sizeof(c));

for(i=0;i10;i++) //a数组中有10个数

e[j++]=c[i];

for(i=0;i2;i++) //b数组中有2个数

e[j++]=d[i];

for(i=0;e[i];i++)

printf("%d\t",e[i]);

}

main()

{

int a[10]={1,2,3,4,5,6,7,8,9,10};

int b[2]={3,4};

printf("a=%d\n",sizeof(a));

min(a,b);

}

c语言表示数组元素个数的函数

没有这样的函数。不过如果是静态定义的数组,可以在定义的函数中 用

sizeof(a)/sizeof(a[0]) 来表示其个数 这个是一维的。 如果是二维的 就是

sizeof(a)/sizeof(a[0][0])

如果是动态分配的,或者是以指针方式传给了其它函数,就没办法通过语句知道大小了,只能你自己记录。


分享文章:C语言带数组表示法的函数 c语言带数组表示法的函数有哪些
转载来源:http://pwwzsj.com/article/dodphso.html