我想从传递给函数的const参数形成一个struct。由于参数是const,我猜结构也必须是const。但是,它不适用于指针。
以下代码编译(MinGW 4.9.2 32位)
struct structType_t {
int* b;
};
void func1(const int* b) {
const structType_t s={b}; // invalid conversion from 'const int*' to 'int*' [-fpermissive]
// do something with s;
}
但是指针不是:
sheet_B
为什么编译器试图抛弃const? 那么如何使用const指针初始化const结构呢?
答案 0 :(得分:2)
如果您更改结构以容纳const int*
,则可以使用它来存储传递给该函数的const int*
,无论您的s
是否为const
struct structType_t {
const int* b;
};
void func1(const int* b) {
const structType_t s={b};
// or
structType_t s2={b};
// do something with s or s2 ...
}
答案 1 :(得分:0)
在第一种情况下,您要创建一个int的副本。 const int的副本不必是const,因此它可以工作。 在第二种情况下,您正在创建指向const int的指针的副本,并将其指定给指向int的指针 - 这是不允许的,这就是它不能编译的原因。