char* var; 之间的区别和 char *var;? [复制]

2023-12-06

只是想知道以下之间是否有任何区别:

char* var;
char *var;

或者这只是一个偏好问题(间距)?


在这种情况下没有区别。但是,您应该更喜欢char *var;.

这是因为*与变量名关联更紧密,并且是不是基本类型的一部分。例如,如果您这样做:

char* a, b;

你拥有的是a, 一个指向 - 的指针char, and b, a char。这很令人困惑!自从*性格更接近char关键字,我们期望两个变量的类型都是指针到-char,但是*实际上是关联的only with a。 (这类似于char a[10], b;正如 teppic 在评论中指出的那样;这[10]说明符同样只与a,所以只有a将是一个数组。)

正确的声明是:

char *a, *b;

*靠近变量的说明符意味着当您intend一个变量是指针而另一个不是:

char *a, b;

在这种情况下,很明显b无意成为指针。在原来的例子中(char* a, b;),我们不知道程序员是否有意b成为一个指针。借用 Douglas Crockford 的话来说,我们所知道的是程序员是无能的。

有些人喜欢在前后加一个空格*:

char * a, * b;

This falls prey to the same problem illustrated above: if b is not a pointer then the declaration (char * a, b;) may also lead to uncertainty about the programmer's intent. Therefore I suggest not placing a space between the * and the variable name1.

不管你怎么看,char* var;应被视为不良风格。根据语言规范,它在语法上是正确的,但会导致代码不可读,因为它appears来表明*说明符是同一声明中所有变量共享的类型的一部分(如果不是)。 (这类似于在同一行上编写一个复杂的函数——它可以工作,但这是一个坏主意。在某些情况下,可读性和可维护性会取代个人的风格偏好,这就是其中之一。)


1Personally, I prefer to put a space after the * only when dealing with function return values:

char * foo();

这是明确的:它是一个返回指针的函数char.

char *foo();

程序员的意思是返回一个指针的函数吗?char,或者他的意思是创建一个指向返回的函数的指针char?该语言会将其解析为与其他原型相同,但我们的目标是可读性,这意味着准确传达我们的意思humans,不仅仅是编译器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

char* var; 之间的区别和 char *var;? [复制] 的相关文章

  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • C++ 中的软(不是:弱)引用 - 这可能吗?有实施吗?

    在 C 中我正在使用boost shared ptr and boost weak ptr自动删除不再需要的对象 我知道这些与引用计数一起工作 在 Java 中 内存由垃圾收集器管理 它将内置对象引用视为strong WeakReferen
  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 是否有与 C++11 emplace/emplace_back 函数类似的 C# 函数?

    从 C 11 开始 可以写类似的东西 include
  • C# 编译器如何决定发出可重定向的程序集引用?

    NET Compact Framework 引入了可重定向程序集引用 现在用于支持可移植类库 基本上 编译器会发出以下 MSIL assembly extern retargetable mscorlib publickeytoken 7C
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • std::bind 重载解析

    下面的代码工作正常 include
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu

随机推荐

  • Symfony2 作曲家安装

    我正在尝试安装 Symfony 2 1 3 最新 我正在运行作曲家并安装一切正常 这only我得到的错误是 Script Sensio Bundle DistributionBundle Composer ScriptHandler cle
  • pow 函数的奇怪行为

    运行以下代码行时 int i a for i 0 i lt 4 i a pow 10 i printf d t a 我很惊讶地看到输出 结果是1 10 99 1000 9999代替1 10 100 1000 10000 可能的原因是什么 N
  • 在页面加载之前在 JavaFX WebView 中注入桥接代码?

    我想在 JavaFX WebView 中加载一些内容或页面 并向 Java 提供一个 Bridge 对象 以便页面的内容可以调用 java 这里描述了如何执行此操作的基本概念 https blogs oracle com javafx en
  • 使用powershell编译并运行java应用程序

    我正在尝试编译一个示例 Helloworld java 文件 我的 jdk 安装在 C Program Files jdk1 7 bin 中 我的 Helloworld java 位于 C Helloworld java 中 其实我对pow
  • 从sql文件执行sql查询

    我想将数据库 shop 中的所有表包含到 mydatabasenewshop 我导出 shop 数据库 现在它被命名为shop sql 有什么方法可以从该文件执行整个查询 而不是直接导入数据库newshop 我想你需要的可能是 mysql
  • 如何在 PowerShell 中的函数结束时返回到用户菜单

    我正在编写一个 PowerShell 脚本 为用户提供许多可供选择的选项 一旦选择了一个选项 就会执行一个功能 并且用户将返回到原始菜单 在下面的代码中 为用户提供了选项 并执行了函数 但完成后 脚本就结束了 我想要的是在函数结束时返回到原
  • 如何在 Windows 10 中禁用 Winscard Discovery?

    我正在使用 ACR122U 测试智能卡 但是 当我将卡放在上面时 Windows 会自动向其发送 APDU 命令 根据问题Windows 8 禁用智能卡即插即用 我禁用了智能卡即插即用 但我仍然可以看到 PIV 选择 称为温斯卡探索 如何在
  • SonarQube 如何创建配置文件并向其中导入新规则

    我正在开发 SonarQube 的插件 以便从 xml 文件导入规则 到目前为止 这已经完成 它们确实被导入到 SonarQube 实例中并显示在 规则 下 尽管正在创建质量配置文件 但所有导入的规则都没有添加到其中 我不明白为什么 我不想
  • SELECT 排名中的 SQL UPDATE 超过分区语句

    我的问题是 我有一个这样的表 Company direction type year month value rank 当我创建表时 默认情况下排名为 0 我想要的是使用此选择更新表中的排名 SELECT company direction
  • asm.js - 函数指针应该如何实现

    注 这个问题纯粹是关于asm js与 C 或任何其他编程语言无关 正如标题已经说的 函数指针应该如何高效地实现 我在网上找不到任何东西 所以我想在这里问一下 Edit 我想在我正在开发的编译器中实现虚拟函数 在 C 中我会做类似的事情来生成
  • pyspark.sql.utils.IllegalArgumentException:u'字段“功能”不存在。'

    我正在尝试执行随机森林分类器并使用交叉验证评估模型 我使用 pySpark 工作 输入 CSV 文件以 Spark DataFrame 格式加载 但我在构建模型时遇到了一个问题 下面是代码 from pyspark import Spark
  • 如何使用 JSF 实现 JQuery 确认对话框

    当我按下 JSF 页面中的按钮时 我想使用 JQuery 对话框来确认操作执行 在我的例子中确认删除行 我发现这个 JQuery 代码运行得很好
  • 猫头鹰旋转木马、导航中心

    我使用 owl carousel 插件 找不到如何使用 autoHeight 选项让导航垂直居中 http codepen io anon pen jJAHL 我尝试如下 但它只达到最后的高度 this gallery owlCarouse
  • 使用 OpenCV 获得最准确的图像

    我想知道是否有人能给我解决这个问题 我怎样才能在休息中获得最清晰的图像 使用 OpenCV 例如 有一个可以移动手的网络摄像头输入 但是当我流式传输该视频时 我得到 10 个 ipimages 但只有第五个更清楚 我想使用 openCV 过
  • 尝试从 Objective-C 转向 Swift VC

    我正在尝试从 Objective C 转向 Swift 但是 当我使用下面的对象尝试此操作时 我收到以下错误 我不知道我做错了什么 我已经在情节提要上设置了segue并将其分配给相同的ID 创建了准备函数和执行函数 void rendere
  • Rails 6.允许任何其他域将特定页面嵌入到 iFrame 中

    我希望允许任何人通过 iFrame 嵌入我的 Rails 网站 但我只想打开一些特定的路线 比如 emded entity1 entity1 id and emded entity2 entity2 id 例如 Youtube 就是这么做的
  • 将导航栏置于 Agency 中心 - Bootstrap 4 主题

    我只是想知道是否有人可以帮助我解决困扰我一段时间的问题 我想要完成的是将菜单置于页面顶部的中心 以便服务组合等标题水平居中 这是我设置的 JSFiddle 的链接 http jsfiddle net bdd9U 1362
  • 在 C# 中使用网络浏览器时如何处理消息框?

    I m using this webbrowswer feature of C Trying to log in a website through my application Everything goes fine except wh
  • FastAPI - 带有 Pydantic 列表字段的 GET 请求

    我是 FastAPI 的新手 从 Flask 迁移 我正在尝试为我的项目创建一个 Pydantic 模型GET route from fastapi import APIRouter Depends from pydantic import
  • char* var; 之间的区别和 char *var;? [复制]

    这个问题在这里已经有答案了 只是想知道以下之间是否有任何区别 char var char var 或者这只是一个偏好问题 间距 在这种情况下没有区别 但是 您应该更喜欢char var 这是因为 与变量名关联更紧密 并且是不是基本类型的一部