rur*_*der 28 c variables declaration
当我宣布在一行上说多个变量时会发生什么?例如
int x, y, z;
Run Code Online (Sandbox Code Playgroud)
一切都是整体.问题是以下陈述中的y和z是什么?
int* x, y, z;
Run Code Online (Sandbox Code Playgroud)
它们都是int指针吗?
Joh*_*ode 60
只有x指向int的指针; y并且z是常规的.
这是C声明语法的一个方面,可以让一些人绊倒.C使用声明符的概念,它引入了声明的事物的名称以及类型说明符未提供的其他类型信息.在宣言中
int* x, y, z;
Run Code Online (Sandbox Code Playgroud)
声明者是*x,y和z(这是C语法的意外,你可以写int* x或者int *x,这个问题是我建议使用第二种风格的几个原因之一).的整型岬x,y和z由类型指定单元指定int,而指针岬x由声明符指定*x(IOW,表达*x具有类型int).
如果您希望所有三个对象都成为指针,那么您有两个选择.您可以明确地将它们声明为指针:
int *x, *y, *z;
Run Code Online (Sandbox Code Playgroud)
或者您可以为int指针创建一个typedef:
typedef int *iptr;
iptr x, y, z;
Run Code Online (Sandbox Code Playgroud)
请记住,在声明指针时,它*是变量名称的一部分,而不是类型.
在你的第一句话中:
int x, y, z;
Run Code Online (Sandbox Code Playgroud)
他们都是int.
但是,在第二个:
int* x, y, z;
Run Code Online (Sandbox Code Playgroud)
只是x一个指针int.y而且z很简单int.
如果你想让它们全部成为int你需要做的事情:
int *x, *y, *z;
Run Code Online (Sandbox Code Playgroud)