gpt4 book ai didi

c - 如何找出为结构创建的数组中元素的数量?

转载 作者:行者123 更新时间:2023-11-30 14:40:32 25 4
gpt4 key购买 nike

我创建了一个特定的结构,然后我继续按以下方式为该结构创建一个数组:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com