C ++中的“int”和“const int”初始化和转换

时间:2013-08-04 22:16:04

标签: c++ pointers initialization const

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

const int *dims = {4};

但它报告了以下错误:

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

任何人都可以告诉我发生了什么并教会我修复它的方法吗?(条件是dims的数组仍为const

2 个答案:

答案 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);