【问题标题】:const cast and pointers to pointers [duplicate]const cast和指向指针的指针[重复]
【发布时间】:2011-11-14 17:45:51
【问题描述】:

可能重复:
Double pointer const-correctness warnings in C

为什么第 1、2 和 3 号案例在 C++ 中可以正常工作,但第 4 号案例不行?

//1
char* p1;
const char* p2 = p1;

//2
char** p3;
char * const * p4 = p3;

//3
char** p5;
const char* const * p6 = p5;

//4
char** p7;
const char** p8 = p7;

【问题讨论】:

标签: c++


【解决方案1】:

【讨论】:

【解决方案2】:

可能想这样做:

//4
typedef char** PPCHAR; 
PPCHAR p7;
const PPCHAR p8 = p7;

在原始形式中,编译器指责失去了 const-qualification(是的,constant-char 的指针指向指针在转换为非const-char),但是如果您以这种方式对它们进行 typedef,您将按照您最初可能打算的方式给予解释的优先级。

【讨论】:

  • 他已经明确提到了 constness!
  • const PPCHAR 等价于char** const。和const char**不一样
  • @sarat:不,在原始 p8 中,“const char”是基本类型。阿里使用“char”。 **p8='a' 应该是一个错误。
  • @OliCharlesworth, Benjamin Lindley:嗯,是的,你是对的(在描述中更新)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
相关资源
最近更新 更多