为什么 p2 不是声明 int* p1, p2; 中的指针类型
Why is p2 not a pointer type in declaration int* p1, p2;?
int* p1, p2;
根据C++标准,p1
是指针,p2
不是。
我只是想知道为什么C++标准没有将p2
定义为指针?
我认为这样做是合理的。因为:
C++是一种强类型语言。也就是说,给定任何类型 T,语句T t1, t2;
始终保证t1
和t2
具有相同的类型。
但是,p1
和p2
没有相同类型的事实违反了规则,并且似乎违反直觉。
所以,我的问题是:制定这样一个违反直觉的规则的理由是什么?只是为了向后兼容?
int
是基类型,*
或&
是前缀说明符,也称为声明符运算符。这意味着*
在其之后对变量进行操作。它不是int
的修饰符.我想这就是原因。
对
你没有多大帮助的简单答案是,这样做是为了与 C 向后兼容,C 具有完全相同的语法来定义变量。这种设计的基本原理必须来自C的创造者,我真的不知道。
我所知道的是,我在不同公司使用的大多数编码准则都禁止在同一语句中定义多个变量,一旦你避免了这一点,一切都变得易于阅读和维护。C 和 C++ 中声明的语法并不是它们的优势之一,但它就是这样。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 请解释"函数1(p1,p2,p3);"的输出
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 为什么 p2 不是声明 int* p1, p2; 中的指针类型