【发布时间】:2015-02-14 05:59:53
【问题描述】:
我正在尝试获取结构数组中的元素数量,以便将其传递给另一个函数。结构:
struct info{
char string1[30];
float float1;
int int1;
char string2[30];
};
我正在尝试运行的部分:
void function1(){
struct info* temp = build();
printf("flag: %lu %lu %lu\n", sizeof(temp), sizeof(temp[0]), sizeof(temp)/sizeof(temp[0]));
sortFloat(temp, sizeof(temp)/sizeof(temp[0]), 1);
free(temp);
}
build() 在从文件中读取数据后返回一个结构数组,其中每一行都是数组中的一个结构。我无法将数组的大小传递给 sortFloat()。打印行返回
flag: 8 72 0
当数据文件中只有两行时。将该参数硬编码为 2 可使整个程序正常工作。为什么这种计算结构体数组元素的方法不行?
【问题讨论】:
-
sizeof(temp)会给你指针变量的大小而不是整个数组的大小。 -
build() 返回不是数组(所有内容),在 C 中,您不能从函数返回数组,它永远是指向数组第一个元素的指针。 C中的指针和数组是不一样的。