我创建了一个特定的结构,然后我继续按以下方式为该结构创建一个数组:
struct members
{
char name[32];
intmax_t personalID;
}typedef struct members Member;
Member array_member[100];
后来我想知道数组中有多少个元素,根据我读过的一些答案,这应该足够了
int nrofmembers = sizeof(array_member) / sizeof(array_member[0]);
但是根据我的经验,我知道如果数组本身是一个参数,这是不可能的。所以我尝试了这个:
int nrofmembers = sizeof(*array_member) / sizeof(array_member[0]);
不幸的是,事实证明这是错误的。此后 nrofmembers 的值为 1,但事实并非如此。
关于如何做到这一点有什么建议吗?
最佳答案
如果你有指针,你就不能使用这个简单的编译时方法。您需要将数组的大小传递给函数
在 C 中,即使您的声明是 ... foo(Member arr[])
或 ... foo(Member arr[100])
,您也始终会传递指针>
struct members
{
char name[32];
intmax_t personalID;
}typedef struct members Member;
Member array_member[100];
int foo(Member *arr, size_t size)
{
/* .... */
}
int main()
{
/* correct */
foo(array_member, sizeof(array_member) / sizeof(array_member[0]));
printf("Hello World");
return 0;
}
关于c - 如何找出为结构创建的数组中元素的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55504288/