c语言,定义多个指针的写法,多个指针的声明

来源:互联网 发布:密码 知乎 编辑:程序博客网 时间:2024/05/17 02:49

先说明正确的多个指针声明应该为:例: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,那得多少关键字呀!!,自己定义结构体还得相应用编译器生成定义结构体指针的类型名,明显是不科学的,这种关键字加运算符的声明方式,明显很科学。

因此要在一条语句中声明多个变量,必须在每个变量前面加上“*”。