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

时间:2013-09-21 03:27:37

标签: c++ c pointers types standards

int* p1, p2;

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

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

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

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

然而,p1p2不具有相同类型的事实违反了规则,并且似乎违反直觉。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

这对您来说无济于事的简单答案是,这是为了向后兼容C,它具有完全相同的语法来定义变量。该设计的基本原理必须来自C的创造者,我真的不知道。

我所知道的是,我在不同公司中使用的大多数编码指南禁止在同一语句中定义多个变量,一旦避免这种情况,一切都变得简单易读。 C和C ++中的声明语法实际上并不是它们的优势之一,但它就是它的本质。