作者BloodyDuke (个巴乐)
看板EE_DSnP
标题Re: [问题]有关void f(int const*q)
时间Tue Nov 11 20:03:01 2008
※ 引述《bonoshi (sbo)》之铭言:
: 以下的测试我觉得有点偏了
: 会做测试的原因应该是对我先前的问题蛮好奇的才会做这些实验
: 贴给大家参考
: 可直接copy到compiler上
: 我有都注解
: 如果有误请高手指正
: 谢谢~
: 测试一
: #include<iostream>
: using namespace std;
: void f(int const**q);//q is a pointer to a pointer to const int
: int main(void){
: /*const*/ int a = 20;//有没有const都没关系
: int const* p = &a;
: f(&p);
: system("pause");
: }
: void f(int const** q){
: *q = 0;//可改*q的值但不可改**q
: }
: //有没有const都没关系,
: //我的解读是只要int const * p = &a保证*p不能被修改就足够了,
: //系统就会承认q是一个pointer to a pointer to a const int,
: //与a宣告时有没有const无关。
: 测试二
: #include<iostream>
: using namespace std;
: void f(int *const *q);
: int main(void){
: int a = 20;
: int* p = &a;
: f(&p);
: cout << a << endl;
: system("pause");
: }
: void f(int *const *q){
: **q = 0;//虽然q是一个pointer to constant pointer to int,*q不能被修改
: ,但**q可以
: }
我做了以下的试验
1.
int main(){
int a=1;
int *p =&a ;
const int ** q=&p;
system("pause");
}
这个由之前的讨论知道不能过
2.
int main(){
int a=1;
int *p =&a ;
const int *const* q=&p;
system("pause");
}
//q is a pointer to a constant pointer pointing to a const int
这样竟然可以过了
觉得很奇怪
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.240.243