【发布时间】:2023-01-25 18:37:09
【问题描述】:
我有一个返回指向结构数组的指针的函数。但是,当我尝试访问返回结构的任何值时,它会打印随机符号。
#include <stdio.h>
struct MY {
int i;
char string[30];
};
struct MY* myFunc() {
struct MY arrayOfStructs[3];
struct MY tempStruct;
struct MY* arrayOfStructsPtr = arrayOfStructs;
tempStruct.i = 1;
tempStruct.string[0] = 'H';
tempStruct.string[1] = 'i';
arrayOfStructs[0] = tempStruct;
tempStruct.i = 2;
tempStruct.string[0] = 'L';
tempStruct.string[1] = 'o';
arrayOfStructs[1] = tempStruct;
tempStruct.i = 3;
tempStruct.string[0] = 'M';
tempStruct.string[1] = 'Y';
arrayOfStructs[2] = tempStruct;
return arrayOfStructsPtr;
}
int main()
{
struct MY* arrayOfStructs = myFunc();
for(int i = 0; i < 3; i++) printf("%d\n", arrayOfStructs[i].i);
return 0;
}
【问题讨论】:
-
myFunc返回时,您指向的数组不再存在,导致未定义的行为. -
比我怎样才能返回一个数组?
-
它要么需要具有静态存储持续时间,要么您可以使用
malloc或calloc分配内存。
标签: arrays c function struct return