您的位置:首页 > 编程语言

从函数返回一个数组的2种方法 (C专家编程 p230)

2013-05-19 16:07 309 查看
严格来说,无法从函数返回一个数组,但可以从函数返回一个指向任何数据结构的指针,包括一个指向数组的指针。

一种方式如下:

#include
<stdio.h>
#include
<stdlib.h>
int (*func())[20];//func是一个函数,它返回一个指向包括20个int元素的数组的指针
int main(void)
{

        int (*result)[20];

        int i = 0;

        result = func();

        for(i
= 0; i
< 20; i++){

                printf("%d/n",
(*result)[i]);

        }

        free(result);

        exit(0);
}

int (*func())[20]
{

        int (*a)[20];

        int i = 0;

        a = calloc(20,
sizeof(int));

        if(a
==
NULL){

                perror("calloc error");

                exit(1);

        }

        for(i
= 0; i
< 20; i++){

                a[0][i]
= i;

        }

        return a;
}


千万要注意:不能从函数中返回一个指向函数的局部变量的指针。

另一种方式如下:

#include
<stdio.h>
#include
<stdlib.h>

struct tag{

        int array[20];
}x, y;
struct tag func(void);

int main(void)
{

        int i;

        x = func();

        for(i
= 0; i
< 20; i++){

                printf("%d/n", x.array[i]);

        }

        exit(0);
}

struct tag func()
{

        int i;

        for(i
= 0; i
< 20; i++){

                y.array[i]
= i;

        }

        return y;
}


分享到:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C 编程 指针
相关文章推荐