为什么 p2 不是声明 int* p1, p2; 中的指针类型

Why is p2 not a pointer type in declaration int* p1, p2;?

本文关键字:p2 指针 类型 声明 int 为什么 p1      更新时间:2023-10-16
int* p1, p2;

根据C++标准,p1是指针,p2不是。

我只是想知道为什么C++标准没有将p2定义为指针?

我认为这样做是合理的。因为:

C++是一种强类型语言。也就是说,给定任何类型 T,语句T t1, t2;始终保证t1t2具有相同的类型。

但是,p1p2没有相同类型的事实违反了规则,并且似乎违反直觉。

所以,我的问题是:制定这样一个违反直觉的规则的理由是什么?只是为了向后兼容?

int

基类型,*&是前缀说明符,也称为声明符运算符。这意味着*在其之后对变量进行操作。它不是int的修饰符.我想这就是原因。

你没有多大帮助的简单答案是,这样做是为了与 C 向后兼容,C 具有完全相同的语法来定义变量。这种设计的基本原理必须来自C的创造者,我真的不知道。

所知道的是,我在不同公司使用的大多数编码准则都禁止在同一语句中定义多个变量,一旦你避免了这一点,一切都变得易于阅读和维护。C 和 C++ 中声明的语法并不是它们的优势之一,但它就是这样。