C++定义多个指针的写法
正确的多个指针声明应该为:例:int *a,*b,*c,*d
;
按照常理定义变量应该为:类型 变量名 如:int a
;
但是定义指针时,int *a
;依照 类型 变量名 的规则来看,就像定义了一个int
型的,名字为*a
的变量,但是实际上我们声明的变量为int*
型的变量a
。
那我们可以这样int* a
;这样看起来类型就是int*
了,变量为a
,但是当我们int* a,b;
时,看起来就是定义了两个int*
型的指针,实际上是定义了一个int*
型的变量a
和一个int
型的b
。
有人说可以这样理解,int *a
;可以把(*a)
看成一个整体也就是(*a)
当作int
类型变量,a
为int*
型指针,这样解释可以,但是遇到比如数组指针 char (*p)[3];
或者函数指针int (*p)(int a,int b);
时,这么解释也说不过去。
那有的人说为何不整成int_ptr
,char_ptr
来定义各种类型变量的指针,如果这样就意味着没有“*”这种方式定义指针了,那二级指针还得整个int_ptr_ptr
,char_ptr_ptr
,那得多少关键字呀!!,自己定义结构体还得相应用编译器生成定义结构体指针的类型名,明显是不科学的,这种关键字加运算符的声明方式,明显很科学。
因此要在一条语句中声明多个变量,必须在每个变量前面加上*
。