C语言中指针符号*的空格写法是否有区别?是否仅针对结构体?
C语言指针声明中
*前后空格的问题 这种带空格的写法没有实质区别,纯粹是代码风格层面的语法变体,和是否是结构体指针完全无关。
在C语言的语法规则里,空格、制表符这类空白字符仅用于分隔语法单元,编译器会直接忽略它们。不管是int *x、int* x还是int * x,编译器都会将其解析为「声明一个指向int类型的指针变量」。
举几个例子,所有写法在编译器眼中完全等价:
- 基础类型指针的不同写法:
int* ptr1; int *ptr2; int * ptr3; - 结构体指针的不同写法:
struct passwd* p; struct passwd *p; struct passwd * p;
之所以会出现不同的写法,只是不同开发者或团队的代码规范习惯不同:有的偏好把*和类型绑定(强调int*是一个整体的指针类型),有的偏好把*和变量名绑定(强调*ptr是指针变量),中间加空格则是另一种风格选择,这些都不会影响代码的功能。
内容的提问来源于stack exchange,提问作者concreteCozy
相关产品推荐
相关产品推荐

