为什么我不能用 const int 的地址初始化 int*
Why can't I initialize a int* with the address of a const int
这就是我所拥有的:
const int x = 10;
int *ptr = &x; //error: 'initializing': cannot convert from 'const int *' to 'int *'
我知道x
在初始化后不能修改,我知道如何解决这个编译问题,但为什么我不能使用指针(在本例中为ptr
)指向x
?
虽然它是const int
,但我不明白为什么我不能指向它,因为我仍然可以用*ptr
来表示x
,对吧?
因为ptr
的类型是int*
,即它指向一个非常数int
。这允许您使用*ptr
修改ptr
。为了防止const
变量被修改,编译器会阻止对非常量指针的初始赋值。
使ptr
指向const int
自然会解决问题:const int* ptr = &x;
相关文章:
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- C++ - *(int**) 地址?这里发生了什么?
- 为什么打印新的int[]会给我一个C ++的地址
- 指针 - 接收地址的函数是否可以获取 int?
- 无符号的 int 到 IP 地址字符串,不带 itoa/to_string/boost
- C++为什么字符串的地址尽管是十六进制格式,但不能存储在 long int 变量中?
- 将无符号int地址视为指针,并将其解引用为字节数组
- 如何从采用 int 和 struct 类型的指针的函数中取消引用指针返回的地址?
- 为什么我不能用 const int 的地址初始化 int*
- 使用inet_pton()获取IPv4地址的无符号int表示形式
- int类型的指针在递增后移动内存中的1个地址
- 取消对结构的 int 指针地址的引用
- 将 int 自己的地址分配给其值
- 指向 int 数组的指针给出的地址与取消引用时相同
- 如何从"const int i"获取i的真实地址
- 为什么在作为函数参数传递时无法更改类型为"const int *"的指针的地址?
- 做 malloc 和 new 返回一个 int 对齐的地址
- (C++内存管理)如果我们有一个 int x = 1234,并且 int &y = x...那么堆栈上 y 的地址是什么?
- 为地址分配int值
- 将指向函数的指针数组作为"int"参数传递是否可以将地址转换为整数?