sizeof- 函数还是宏? [复制]

2024-01-01

在c中,我们使用sizeof()用于获取数据类型的大小。所以 它是如何定义的。它是一个宏或一个函数。

因为我们可以用两种方式来使用它,

sizeof int

and

sizeof(int)

那么这是如何在头文件中定义的。


两者都不是。它是一个内置运算符,其值在编译时计算,除非参数是可变长度数组的名称(在 C99 中添加)。

你经常看到的括号是not“通话”的一部分,因为sizeof不是一个函数。他们是argument,并且仅当参数是强制转换表达式(即括在括号中的类型名称)时才需要。

我个人推荐against using sizeof尽可能使用类型名称作为参数,因为通常不需要它,并创建可能导致错误的断开/解耦。

考虑这样的事情:

float *vector = malloc(100 * sizeof(double));

当然,上面的内容包含一个错误:如果float小于double,会浪费很多内存。很容易想象最终会得到类似上面的结果,如果vector一开始是一个数组double但后来改为float。为了防止这种情况,我总是这样写:

float *vector = malloc(10 * sizeof *vector);

上面使用了参数*vector(类型的表达式float) to sizeof,即not类型名称,因此不需要括号。它还将元素的大小“锁定”到用于保存它的指针,这更安全。

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

sizeof- 函数还是宏? [复制] 的相关文章

  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder

随机推荐

  • toString() 是否定义为返回 java.lang.String ?

    Consider String foo s toString 对于一个非null java lang String实例s 这是定义为返回自身 还是取决于特定的 Java 实现 出于兴趣 是否进行了 深层复制 检查我的 JDK 源代码证实了这
  • 计算图像中某个区域的平均颜色

    目标是在图像顶部放置标题 并将文本颜色设置为与其所在背景形成对比的颜色 为此 我希望计算下图中红色矩形内区域的平均颜色 扩展于邦佐的回答 a 10831158 这是一个示例命令 convert Y82IirS jpg resize 1x1
  • Android 自定义 ActionBar 与搜索视图

    我在我的 Android 应用程序中使用自定义 ActionBar 库 我想显示一个 searchView 但找不到任何解决方案 我正在图书馆工作 https github com johannilsson android actionba
  • IDisposable 对象的依赖注入和生命周期

    我正在尝试使用依赖注入方法 使用 Ninject 开发一个库 并且我可能由于我的设计不正确而感到某种困惑 综上所述 我的设计思路是 A parent对象有一个common object A parent对象使用一些可变数量的child对象
  • 框架比较和开销

    我正在开发一款使用 Zend 框架开发的 Facebook 游戏 现在我没有太多的流量 并且已经看到相当多的数据使用 CPU 时间 其实我不太擅长Zend 我擅长从头开始编写 PHP 和 JS 代码 所以 我很好奇Zend框架的性能 因为我
  • 如何使用 linq toEntity 读取 UTF 8 编码的字符串

    我正在尝试阅读石灰调查 http www limesurvey org 使用 Linq to 实体的表 我的问题是 LimeSurvey 以 UTF8 存储字符串 而 Net 不喜欢它 那么 我有一个简单的函数来列出我的所有调查 我如何告诉
  • Matlab中如何获取直方图数据

    众所周知 Matlab 中的 hist 函数绘制数组的直方图 我需要知道每个垃圾箱的数值 请问你能帮帮我吗 thanks 指定输出hist http www mathworks com access helpdesk help techdo
  • 如何通过flask.Blueprint.route装饰器传递类的自身?

    我正在使用 Flask 和 Python 2 7 编写网站的后端 但遇到了一些问题 我喜欢使用类来封装我的函数 它使我的事情变得整洁并帮助我保持一切模块化 不过 我遇到的一个问题是 flask 用于路由的装饰器不保留 self 变量 我使用
  • 普通 JavaScript 中的 jqueryposition()

    我有以下代码行 var newLeftPos span s i position left parseInt span s i css width 10 它在 ie6 及更高版本中工作得很好 但我还需要让它在 ie5 5 中工作 现在我们不
  • 使用 Redux 获取 Widget 树外部的更新状态

    是否可以从 Widget 树之外的 Store 获取最新状态 在 Provider 中 您可以通过像这样调用 Provider 轻松做到这一点 并且如果有任何更改 状态将更新 Provider of
  • 为什么 MSBuild 将 *.XmlSerializers.dll 程序集放在已发布的 Web 应用程序的根文件夹中?

    我有一个构建过程 它采用我的 VS 2008 NET 2 0 ASP NET 项目并使用 MSBuild 构建它 该项目包含 ASPX 文件和一个 Web 服务 并且还连接到另一个 Web 服务 一切似乎都运行良好 除了 MSBuild 将
  • c# xml序列化不写null

    当我序列化一个包含可为 null DateTime 的 C 对象时 有没有办法将 null 值保留在 xml 文件之外 而不是让
  • SFINAE:static_assert 与 std::enable_if

    是否存在以下缺点 建议 句法 template lt typename T gt void f static assert std is same lt T int gt value 而不是 SFINAE 看起来像拐杖 template l
  • 使用“随机”键反序列化 JSON

    我正在尝试反序列化此 Json 代码 hotkeyOptions autoSwitchHotkeyPreset true currentHotkeySetName Paladin hotkeySets Newbie F10 useObjec
  • 添加引号到 CSV 导出

    我正在使用以下命令将数据导出到 CSV 文件fputcsv 我有正在写入的字符串 但是我要求数据用双引号引起来 foreach orderDetails lines as line fputcsv orderImportCsv line 在
  • 如何使用 html5 音频标签在 Android 上使用 PhoneGap 播放本地 mp3?

    我正在使用phonegap 上的Android SDK v19 在Android 4 4 上进行部署 我在与我的 index html 文件相同的文件夹中有一个 mp3 文件 我想使用 html5 音频标签来播放它
  • 如何在 ASP.NET Core 的 Razor Pages 中设置全局变量?

    我想检查浏览器是否是 IE 并在 razor 页面中执行某些操作 我刚刚在剃刀页面中创建了一个函数来做到这一点 不过 我认为在每个razor页面中使用检查浏览器是否为IE的功能是多余的 对于独立用户 我只需要检查一次并设置一个全局变量IsI
  • 如何在 C# 命令中使用 LIKE 运算符?

    我需要将字符串插入 Sql 命令 search CommandText SELECT FROM Contacts WHERE Name like person 正确的使用方法是什么LIKE在命令中 应该 SELECT FROM Contac
  • 实例化新 Android Fragment 的最佳实践

    我见过在应用程序中实例化新片段的两种一般做法 Fragment newFragment new MyFragment and Fragment newFragment MyFragment newInstance 第二个选项使用静态方法ne
  • sizeof- 函数还是宏? [复制]

    这个问题在这里已经有答案了 在c中 我们使用sizeof 用于获取数据类型的大小 所以 它是如何定义的 它是一个宏或一个函数 因为我们可以用两种方式来使用它 sizeof int and sizeof int 那么这是如何在头文件中定义的