我在程序中编写了以下代码行:
const int *dims = {4};
但它报告了以下错误:
“int类型的值不能用于初始化const int类型的实体”
任何人都可以告诉我发生了什么并教会我修复它的方法吗?(条件是dims
的数组仍为const
)
答案 0 :(得分:3)
代码const int *dims = {4};
表示将指针dims赋值为4。
但是为什么你想要一个指针指向内存位置4?这是不可能的,这是你想要的,不允许这样做。
以下是获取指向值为4的const int的指针的一些选项:
const int *dims = new int(4); // beware someone needs to delete dims
对于自动生命周期,如在堆栈中:
const int autoDims(4); // Will be deleted when autoDims goes out of scope
const int *dims(&autoDims);
或:
const int dims[] = {4}; // Will be deleted when dims goes out of scope
如果你真的想要一个值为4的指针,你必须显式地转换为指针类型:
const int *dims = (int *)4;
答案 1 :(得分:2)
编译器抱怨,因为您正在尝试使用整数初始化指针。
您所指的功能可能希望传递一个数组。您可以使用常量数组调用它,如下所示:
const int dim[4] = {1,2,3,4};
foo(dim);