我在我的程序中编写了以下代码行:
const int *dims = {4};
但它向我报告了以下错误:
“不能使用 int 类型的值来初始化 const int 类型的实体”
谁能告诉我发生了什么并教我一种解决方法?(条件是数组dims
仍然是const
)
我在我的程序中编写了以下代码行:
const int *dims = {4};
但它向我报告了以下错误:
“不能使用 int 类型的值来初始化 const int 类型的实体”
谁能告诉我发生了什么并教我一种解决方法?(条件是数组dims
仍然是const
)
代码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;
编译器抱怨是因为您试图用整数初始化指针。
您所指的函数可能期望传递一个数组。您可以使用常量数组调用它,如下所示:
const int dim[4] = {1,2,3,4};
foo(dim);