Visual Studio C++指针靠前靠后的问题全面解析

 更新时间:2021年04月08日 11:38:42   作者:Oberon  
这篇文章主要介绍了Visual Studio C++指针靠前靠后的问题全面解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

本文地址:https://www.cnblogs.com/oberon-zjt0806/p/14631149.html

甜咸之争

经常写C++的基本上避不开使用指针,而且C++中指针类型的写法大体上有两种:

int* a = nullptr; //*靠前
int *b = nullptr; //*靠后

都是声明一个指针。

关于哪种写法的倾向性,每个人都不太一样,有的往前放,有的往后放,还有的👴爱放哪放哪,你管得着嘛。

《C++ Primer》中推荐靠后,原因是:

int *a,b,c; // a是指针,b和c都不是
int* a,b,c; // 一样,但容易引起误会,让人误以为b和c是指针,实则不然

不过用Visual Studio写C++的时候,格式化方式又有所不同,当你敲完int*a=nullptr;后会靠前,会变成int* a=nullptr;,其原因可能是隔壁的C#只允许往前放的写法:

/C#代码
unsafe ...
{
	int* a,b,c; 	// a,b,c都是指针
	int *a,*b,*c; 	// 错误!不让这么写。
}

我倒是不关心C#怎么写,但是在C++的语境下,我赞同《C++ Primer》的观点,喜欢往后放,但是VS就像个傲娇一样,分号一敲完就把我刚写好的int *a变成了int* a

难道甜和咸就不共戴天了么??

当然不是,对于C++代码,VS默认状态下使用的是Clang-Format方案。
Clang-Format将这个问题称为指针对齐,使用PointerAlignment设置,其实听说Clang默认是Right的。不过在Clang-Format配置文件中VS默认将PointerAlignment置为Left

当然,我们倒没必要把VS的Clang-Format配置文件拎出来暴打一顿塞回去,VS其实允许我们手动设置这个风格,步骤如下:

1.菜单栏→工具→选项,打开选项窗口

2.左侧搜索“格式”然后找到箭头所指的项(或者在左侧直接按树找文本编辑器→C/C++

3.依次往下找,代码样式→格式设置→间距,然后在右侧找运算符的间距→指针/引用对齐方式下面有四个选项,你就可以设置成你prefer的方式,然后在下面看预览效果观察*&的位置,确定就好了

这样,VS就不会执拗地把*往前放了。

类似地,关于其他运算符的设置方法也可以在这个上下文中进行,因此这个位置值得记录一下,毕竟恰当设置可以提升开发效率,这个设置的位置又比较隐蔽容易迷路,所以特此记录一下。

到此这篇关于Visual Studio C++指针靠前靠后的全面解析的文章就介绍到这了,更多相关Visual Studio C++指针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言基于EasyX绘制时钟

    C语言基于EasyX绘制时钟

    这篇文章主要为大家详细介绍了C语言基于EasyX绘制时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 详解C++编程中向函数传递引用参数的用法

    详解C++编程中向函数传递引用参数的用法

    这篇文章主要介绍了详解C++编程中向函数传递引用参数的用法,包括使函数返回引用类型以及对指针的引用,需要的朋友可以参考下
    2016-01-01
  • C++命名空间域的实现示例

    C++命名空间域的实现示例

    命名空间域就是一个独立的空间外面不能直接调用该空间域只能用访问限定符指定访问该空间域,本文主要介绍了C++命名空间域的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • C++的new和delete详解

    C++的new和delete详解

    这篇文章主要介绍的是C++的new和delete,可以这么理解 new相当于是malloc 、delete相当于是free,下面我们就来详情介绍,,需要的朋友可以参一考
    2021-09-09
  • C语言实现套接字操作的示例代码

    C语言实现套接字操作的示例代码

    在C语言中,套接字(Socket)是一种进行网络通信的接口,这篇文章就来和大家介绍一下C语言中是如何进行套接字操作的,需要的可以参考一下
    2023-06-06
  • C语言实现简易计算器功能

    C语言实现简易计算器功能

    这篇文章主要为大家详细介绍了C语言实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Visual Studio下Eigen库环境配置方式

    Visual Studio下Eigen库环境配置方式

    这篇文章主要介绍了Visual Studio下Eigen库环境配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • C++实现百度坐标(BD09)及GCJ02与WGS84之间的转换

    C++实现百度坐标(BD09)及GCJ02与WGS84之间的转换

    这篇文章主要为大家详细介绍了C++实现百度坐标(BD09)及GCJ02与WGS84之间的转换的方法,文中的示例代码讲解详细,希望对大家有所帮助
    2023-03-03
  • c++ 解析yaml文件的步骤

    c++ 解析yaml文件的步骤

    这篇文章主要介绍了c++ 解析yaml文件的步骤,帮助大家更好的理解和使用c++,感兴趣的朋友可以了解下
    2020-12-12
  • C++实现自定义撤销重做功能的示例代码

    C++实现自定义撤销重做功能的示例代码

    在使用c++做界面开发的时候,尤其是实现白板功能时需要自己实现一套撤销重做功能.如果是qt则有QUndoable对象,可以直接拿来用。但是如果是使用gdi绘图,则可能需要自己实现了。本文就来用C++实现自定义撤销重做功能,需要的可以参考一下
    2022-12-12

最新评论