注册 登录
编程论坛 C++教室

关于const不能用于指向指针的指针问题

哈171596431 发布于 2023-09-02 12:34, 417 次点击
const int **pp2   二级间接引用
int* p 一级间接引用
const int n = 3常量

pp2 = &p
*pp2 = &n
*p = 10这里会发生异常
也就是说二级间接关系,将非const指针赋值给const指针
会发生这种异常。


书上说int ary[][4]是指向指针的指针,不能使用const
const只能用于指向基本类型的指针
各位大佬有没有例子说明一下,因为书上并没有写出这个例子。


书名c++primer plus
3 回复
#2
AZhengYe2023-09-07 11:11
哪一页写的?
#3
AZhengYe2023-09-07 11:14
pp2指向非const的p报异常我知道,后面那段话是真的吗,const应该可以修饰指向指针的指针吧。
#4
maguangzhi2023-09-23 15:24
int ary[][4]只能定义为数组形参,其退化类型为int(*ary)[4],因此,它并不是指向指针的指针(即它不是int **ary), 而是指向数组int[4]的指针。
参见https://www.。根据上述链接及其教材,它是数组指针的理由如下:
    对于类型int(*ary)[4],sizeof(*ary)=sizeof(int(&)[4])=sizeof(int[4])=4*4=16字节。
    对于类型int **ary,sizeof(*ary)=sizeof(int*&)=sizeof(int*)=4字节。
你可以使用sizeof试一试,看看到底是不是指向数组的指针。要学好C++2023最新国际标准,参见“C++程序设计实践教程(新国标微课版)”。

[此贴子已经被作者于2023-9-23 15:30编辑过]

1