深入理解const char*p,char const*p,char *const p,const char **p,char *const*p ...

2023-11-17

一、可能的组合:

     (1)const char*p

     (2)char const*p

     (3)char *const p
     (4)const char **p

     (5)char const**p

     (6)char *const *p

     (7)char **const p

     当然还有在(5)、(6)、(7)中再插入一个const的若干情况,不过分析了以上7中,其他的就可类推了!

二、理解助记法宝:

     1。关键看const 修饰谁。

     2。由于没有const *的运算,若出现const*的形式,则const实际上是修饰前面的。

     比如:char const*p,由于没有const*运算,则const实际上是修饰前面的char,因此char const*p等价于const char*p。也就是说上面7种情况中,(1)和(2)等价。 同理,(4)和(5)等价。在(6)中,由于没有const*运算,const实际上修饰的是前面的char*,但不能在定义时转换写成 const(char *)*p,因为在定义是"()"是表示函数。

三、深入理解7种组合

     (1)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入理解const char*p,char const*p,char *const p,const char **p,char *const*p ... 的相关文章

  • 编译器如何在 C 中将数组初始化(为零)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 免责声明 我可能误解了数组是如何创建 分配和初始化的 如果是这样 请尝试阅读字里行间 如果我通过这样做创建一个数组 int array
  • C++“声明和初始化”语句是表达式吗?

    语言标准说 注 第 5 条定义了语法 求值顺序和含义 58 表达式是一系列运算符和 指定计算的操作数 一个表达式可以产生一个 值并可能引起副作用 尾注 例如 我有下面的代码 int i 1 A obj 那么 上述两种说法都算 表达 吗 st
  • C# - 初始化器内类字段的闭包?

    考虑以下代码 using System namespace ConsoleApplication2 class Program static void Main string args var square new Square 4 Con
  • 移动构造函数和初始化列表

    我想为需要成为值类型的特定类型实现移动构造函数 无复制构造函数 boost unordered map 我们称这种类型为Composite Composite有以下签名 struct Base Base stuff no default c
  • 无法初始化私有常量成员[重复]

    这个问题在这里已经有答案了 我想要一个int与我的类相关联 该类在该类的用户实例化它时设置 class MyClass public MyClass int x private const int x 为了不断初始化它 我尝试使用构造函数
  • 是否可以在 C++ 中使用初始化列表设置数组的特定成员?

    我知道您可以使用初始化列表来初始化整个数组 如下所示 struct s int a 1 s int b a b 但是是否可以设置一个特定成员的值 因为这 struct s int a 1 s int b a 0 不起作用并抛出两个错误 ex
  • 初始化顺序问题

    给出代码示例 class B Some contents class C private B b class A private B b C c 类 C 有一个对 b 的引用 因此需要用它来初始化 类 A 包含 B 的实例和 C 的实例 我
  • 类数据默认初始化

    我有以下代码 include
  • C++变量声明和初始化规则

    考虑以下声明和初始化类型变量的方法C C c1 C c2 c2 C C c3 C C c4 C 所有这些是否完全等同 或者其中一些可以根据确切的定义而有所不同C 假设它有公共默认值和复制构造函数 这些意味着 C c1 default con
  • 初始化列表中的依赖关系

    这种行为定义明确吗 class Foo int A B public Foo int Bar B Bar A B 123 int main Foo MyFoo 0 return 0 不 它是未定义的 A将首先初始化 它是类定义中的第一个 并
  • iOS 指定初始化器:使用 NS_DESIGNATED_INITIALIZER

    我们在 XCode 6 中引入了这个新宏 NS DESIGNATED INITIALIZER 我在网上搜索 但找不到任何关于如何使用它的好的文档 从语法上来说 我们可以这样使用它 instancetype initWithCoder NSC
  • 在c#中初始化多维数组(与其他数组)

    在 C 中 可以使用常量初始化多维数组 如下所示 Object twodArray new Object 00 01 02 10 11 12 20 21 22 我个人认为用硬编码常量初始化数组对于测试练习之外的任何事情都是毫无用处的 无论如
  • 即使我确实为变量设置了初始值,数据段也没有被初始化

    我已经编写了一个代码 该代码应该生成某种数字列表 但是即使我为它们分配了初始值 我的数据段变量也没有被初始化 This is how DS 0000 looks when I run it 这是我的代码 但数据段只保留垃圾值 MODEL s
  • Radio r = Radio("PSR", 100.8) 和 Radio("PSR", 100.8) 有什么区别? [复制]

    这个问题在这里已经有答案了 我是 C 新手 正在尝试理解一些东西 我的 main cpp 中有这段代码 Radio r Radio PSR 100 8 或该代码 Radio r PSR 100 8 两者似乎都有效并且做同样的事情 那么有什么
  • 如何将焦点设置到 Windows 窗体应用程序中的控件?

    在 Windows 窗体应用程序中 when我是否编写代码以在应用程序启动时以及随后调用函数后将焦点设置到控件 例如 如果我有一个 DropDownList 一个 TextBox 和四个按钮 并且我希望将 Focus 设置为 DropDow
  • Ruby 对象打印为指针

    我正在尝试创建一个类 它有一个带有单个参数的构造函数 当我创建该对象的新实例时 它返回一个指针 class Adder def initialize my num my num my num end end y Adder new 12 p
  • CPP中原始数据类型的构造函数初始化

    在cpp中 我们可以将原始数据类型初始化为 int a 32 这个构造函数初始化是如何工作的 C 是否将其视为对象 这在以下内容中得到了最好的描述 C 03 8 5 初始化器 第 12 和 13 段 new 表达式 5 3 4 static
  • 如何初始化静态地图?

    你会如何初始化静态Map在Java中 方法一 静态初始化方法二 实例初始化 匿名子类 或者 还有其他方法吗 各自的优点和缺点是什么 这是说明这两种方法的示例 import java util HashMap import java util
  • 为什么使用[ClassName alloc]而不是[[self class] alloc]?

    我正在读马克 达尔林普尔 Mark Dalrymple 的著作在 Mac 上学习 Objective C 仅在协议章节 所以仍然相对较新 并试图弄清楚一些事情 为什么要通过类自己的名称来引用它 如果我有一个叫做Foo 为什么我会想写 比如说
  • 寻找一种简单的方法来重新初始化结构

    我有一个名为 CoolStruct 的结构 struct CoolStruct int id uint32 type uint32 subtype String name 我也有这些结构的向量 std vector

随机推荐