严格的讲,无法直接从函数返回一个数组。但是,可以让函数返回一个指向任何数据结构的指针,当然也可以是一个指向数组的指针。 下面直接贴代码: #include <stdio.h> #include <string.h> #include <malloc.h> #define PRINT_ADDRESS(addr) printf("0x%08X/n", (addr)) // 使用指针从函数返回一个数组 // paf是一个函数,它返回一个指针,该指针指向一个包含20个int元素的数组 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() { // 声明result是一个指针,指向一个包含20个int元素的数组 int (*result)[20]; char *p = NULL;//"char * test"; // 上面是变量定义 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; }