严格的讲,无法直接从函数返回一个数组。但是,可以让函数返回一个指向任何数据结构的指针,当然也可以是一个指向数组的指针。
下面直接贴代码:
- #include <stdio.h>
- #include <string.h>
- #include <malloc.h>
-
- #define PRINT_ADDRESS(addr) printf("0x%08X/n", (addr))
-
-
-
- int (*paf())[20]
- {
- int (*pear)[20];
- int i = 0;
-
- pear = (int (*)[20])malloc(20 * sizeof(int));
- printf("Malloc memory, Address: ");
- PRINT_ADDRESS(pear);
-
- if (!pear)
- {
- printf("malloc failed!/n");
- }
-
-
- for (i = 0; i < 20; i++)
- {
- (*pear)[i] = i;
- }
-
- return pear;
- }
-
- void UsePointerReturnArrayFunction()
- {
-
- int (*result)[20];
-
- char *p = NULL;
-
-
- printf("/n使用指针从函数返回一个数组 -->/n");
-
-
- result = paf();
- printf(" Free memory, Address: ");PRINT_ADDRESS(result);
- free(result);
-
- printf("%s/n", p);
-
- printf("--> 使用指针从函数返回一个数组/n/n");
- }
-
- int main()
- {
- UsePointerReturnArrayFunction();
-
- return EXIT_SUCCESS;
- }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。