gpt4 book ai didi

c - 如何在 c 中分配指向数组 [ ] 的指针?

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:08 25 4
gpt4 key购买 nike

如何在 c 中将指针分配给数组?在这个例子中,我希望 some.x 的值存储在 vals 中

typedef struct s
{
int x[];
}s;

int main()
{
int* vals = malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++)
vals[i] = i + 10;

s some;
//some.x = vals?

return 0;
}

最佳答案

假设您想要分配一个具有灵活数组成员的结构,而不是分配一个指向数组的指针(正如其他人所说 - 您不能那样做)

要使用灵活的数组成员,您需要分配结构以及数组的内存量。

typedef struct s
{
int x[];
}s;

int main()
{
s *some = malloc( sizeof( *some ) + ( 10 * sizeof( int ) ) );
for ( int i = 0; i < 10; i++ )
some->x[i] = i + 10;

return 0;
}

请注意,您不能将 sizeof( struct ... ) 排除在分配之外 - 结构的存在不能保证为零,即使灵活数组成员是唯一的字段结构。

正如@chux 在评论中指出的那样,这与使用变量而不是类型作为 sizeof() 参数更一致:

    s *some = malloc( sizeof( *some ) + ( 10 * sizeof( some->x[0] ) ) );

关于c - 如何在 c 中分配指向数组 [ ] 的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802302/

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