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

从Java转C++:int* n与int *n的区别及相关疑问

关于C++指针声明的几个疑问解答

1. int* a; 和 int *b; 的区别

这两行代码完全没有语法上的区别,都是用来声明一个指向int类型的指针变量。空格在这里只是书写风格的差异:

  • 写成int* a的风格,更强调int*是一个整体的指针类型;
  • 写成int *b的风格,更突出*是作用在变量b上的指针标识。

需要注意的是,如果在同一行声明多个变量,这种风格差异会影响理解:比如int* a, b;里a是指针,但b是普通int;int *a, b;的效果完全一样——本质上C++的语法是*绑定到变量,而非类型,所以多变量声明时,每个指针变量前都要单独加*。

2. int *a 和 int (*a) 是否相同?

这两者完全不同:

  • int *a是标准的指向int类型的指针声明;
  • int (*a)是不完整的函数指针声明(完整写法类似int (*a)(int)),它表示a是一个指针,指向返回值为int类型的函数。括号在这里改变了优先级,让*先和a绑定,而非和前面的int绑定——如果没有括号,int *a()会被解析成返回int*类型的函数,而非函数指针。

内容的提问来源于stack exchange,提问作者codexistent

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:22:03