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;

}

温馨提示:答案为网友推荐,仅供参考