0

我在我的程序中编写了以下代码行:

const int *dims = {4};

但它向我报告了以下错误:

“不能使用 int 类型的值来初始化 const int 类型的实体”

谁能告诉我发生了什么并教我一种解决方法?(条件是数组dims仍然是const

4

2 回答 2

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;
于 2013-08-04T23:08:55.930 回答
2

编译器抱怨是因为您试图用整数初始化指针。

您所指的函数可能期望传递一个数组。您可以使用常量数组调用它,如下所示:

const int dim[4] = {1,2,3,4};

foo(dim);
于 2013-08-04T22:44:47.900 回答