You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:20:26