gpt4 book ai didi

c - 如何正确初始化 const int const * 变量?

转载 作者:太空狗 更新时间:2023-10-29 17:01:43 25 4
gpt4 key购买 nike

所以我有一个结构:

typedef struct myStruct
{
const int *const array_ptr;
} myStruct_s;

我有一个 constint 数组:

const int constArray[SIZE1] =
{
[0] = 0,
[1] = 1,
[2] = 2,
//...
};

现在我有一个 const 数组 myStruct_s 用指定的初始化器初始化:

const myStruct_s structArray[SIZE2] =
{
[0] =
{
.array_ptr = &constArray
},
//...
}

我收到警告:

a value of type "const int (*)[SIZE1]" cannot be used to initialize an entity of type "const int *const"

如何正确初始化这个指针?

我想避免:

const myStruct_s structArray[SIZE2] =
{
[0] =
{
.array_ptr = (const int *const) &constArray
},
//...
}

如果可能的话,因为我觉得我告诉编译器“我不知道我在做什么,请不要检查类型”...

感谢您的帮助:)。

最佳答案

constArray 已经(衰减为)一个指针,您想要

.array_ptr = constArray

.array_ptr = &constArray[0] /* pointer to the first element */

代替

.array_ptr = &constArray /* you don't want the address of */

考虑

int a[] = {1,2};
int *p = &a;

这是不正确的,因为 p 想要一个指向 int 的指针(&a[0] 或只是 a), 不是指向 2 int (&a)

数组的指针

关于c - 如何正确初始化 const int const * 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36766243/

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