有没有办法从 int** 创建一个 const int**?
我目前正在使用:
const int **pixel2=*pixel;
const char **header2=*header;
我不断收到错误:cscd240HW34.c:52:21: warning: initialization from incompatible pointer type [enabled by default]
const int **pixel2=*pixel;
有没有办法从 int** 创建一个 const int**?
我目前正在使用:
const int **pixel2=*pixel;
const char **header2=*header;
我不断收到错误:cscd240HW34.c:52:21: warning: initialization from incompatible pointer type [enabled by default]
const int **pixel2=*pixel;
如果pixel
已经是类型,int **
那么:
const int **pixel2 = (const int **)pixel;
作为解释:需要强制转换的原因是因为这仍然没有给您提供您可能想象的那样多的类型安全性。例如,您现在可以编写:
const int c = 'x';
*pixel2 = &c; // fine, both are const int *
**pixel = 'y'; // no compiler error, but UB as we modify a non-writable object
所以,看看是否有另一种方法来做你想做的事。请注意,这个定义pixel2
避免了这种利用
const int * const * pixel2;
尽管可悲的是 C 仍然需要强制转换才能分配pixel
给pixel2
.
这个问题是 clc FAQ 中的 11.10。