const void *& 和 const PVOID &的区别
答案:1 悬赏:50 手机版
解决时间 2021-11-08 15:36
- 提问者网友:动次大次蹦擦擦
- 2021-11-08 00:43
const void *& 和 const PVOID &的区别
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-11-08 00:57
const void*& B; // 声明一个引用类型为 const void 的指针。
这个就需要 const void* b 才可以
void* const& B; // 声明一个引用类型为 void* 的常量指针。追问但是
为什么const PVOID &B;//可以通过?
PVOID 应该是 typedef void *PVOID
那么
const PVOID &B;
和
const void *&B;
应该是一样不能通过的
为什么 const PVOID &B可以通过?
是 typedef 的原因还是怎么????
而且 如果
int b
const int &B;
也就是把 void*换成 int 后是可以通过的追答// 指向常量
const int* A;
const int*& B = A;
int a;
B = &a; // OK B不是常量,可以修改
*B = 100 //ERROR B指向的是常量,不可修改
a = 100 // OK
// 指针常量
int a;
int *const A = &a;
int *const& B = A;
int b;
B = &b; // ERROR B是常量,不可修改
*B = 100 // OK B指向的不是常量,可以修改
assert(a == *B);
// 定义类型
typedef int* PINT
int a;
const PINT A = &a; // A是一个int指针常量
const PINT& B = A;
int b;
B = &b // ERROR 不能修改常量
*B = 100; // OK 可以修改指向的变量a的值
assert(a == *B);
只要你能理解“指针常量”和“常量指针”,就会明白
这个就需要 const void* b 才可以
void* const& B; // 声明一个引用类型为 void* 的常量指针。追问但是
为什么const PVOID &B;//可以通过?
PVOID 应该是 typedef void *PVOID
那么
const PVOID &B;
和
const void *&B;
应该是一样不能通过的
为什么 const PVOID &B可以通过?
是 typedef 的原因还是怎么????
而且 如果
int b
const int &B;
也就是把 void*换成 int 后是可以通过的追答// 指向常量
const int* A;
const int*& B = A;
int a;
B = &a; // OK B不是常量,可以修改
*B = 100 //ERROR B指向的是常量,不可修改
a = 100 // OK
// 指针常量
int a;
int *const A = &a;
int *const& B = A;
int b;
B = &b; // ERROR B是常量,不可修改
*B = 100 // OK B指向的不是常量,可以修改
assert(a == *B);
// 定义类型
typedef int* PINT
int a;
const PINT A = &a; // A是一个int指针常量
const PINT& B = A;
int b;
B = &b // ERROR 不能修改常量
*B = 100; // OK 可以修改指向的变量a的值
assert(a == *B);
只要你能理解“指针常量”和“常量指针”,就会明白
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯