sizeof(*ptr) 和 sizeof(struct) 之间的区别

2024-03-29

我尝试了以下程序

struct temp{
   int ab;
   int cd;
};

int main(int argc, char **argv)
{
   struct temp *ptr1;
   printf("Sizeof(struct temp)= %d\n", sizeof(struct temp));
   printf("Sizeof(*ptr1)= %d\n", sizeof(*ptr1));
   return 0;
}

Output

Sizeof(struct temp)= 8
Sizeof(*ptr1)= 8

在Linux中,我在很多地方观察到使用sizeof(*pointer)。如果两者相同为什么是sizeof(*pointer) used ??


我一般更喜欢sizeof(*ptr)因为如果你稍后返回并更改你的代码,这样ptr现在有不同的类型,您不必更新sizeof。在实践中,您可以更改类型ptr没有意识到再往下几行,您正在获取结构的大小。如果您没有多余地指定类型,那么当您稍后需要更改它时,搞砸的可能性就较小。

从这个意义上说,它是“可维护性代码”或“防御性代码”之一。

其他人可能有他们的主观原因。通常需要输入的字符较少。 :-)

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

sizeof(*ptr) 和 sizeof(struct) 之间的区别 的相关文章

  • 访问特征矩阵的行向量时复制或引用

    我正在使用的代码Eigen http eigen tuxfamily org index php title Main Page矩阵库 我注意到在整个代码中 有如下访问器 RowVector3f V size t vertex index
  • 如何将动态数据写入 MVC 3 Razor 中的页面布局?

    我有带有 Razor 引擎的 MVC 3 C 项目 将动态数据写入 Layout cshtml 的方法和最佳实践是什么 例如 也许我想在网站的右上角显示用户名 该名称来自会话 数据库或基于用户登录的任何内容 更新 我也在寻找将某些数据渲染到
  • ASP.NET 如何在 Web API 中读取多部分表单数据?

    我将多部分表单数据发送到我的 Web API 如下所示 string example my string HttpContent stringContent new StringContent example HttpContent fil
  • 基于多线程的 RabbitMQ 消费者

    我们有一个 Windows 服务 它监听单个 RabbitMQ 队列并处理消息 我们希望扩展相同的 Windows 服务 以便它可以监听 RabbitMQ 的多个队列并处理消息 不确定使用多线程是否可以实现这一点 因为每个线程都必须侦听 阻
  • 为基于架构的 XML 文件创建 WPF 编辑器

    这是场景 我们的服务器产品之一使用大型 XML 配置文件 该文件的布局相当好 并且针对 XSD 文件进行了验证 现在是时候构建一个配置 GUI 来维护这个文件了 我想深入研究 WPF 来完成它 我可以为每个配置部分布置一个单独的表单 每次向
  • 如何将 mat 转换为 array2d

    我为dlib http dlib net face landmark detection ex cpp html那里的面部地标代码使用 array2d 来获取图像 但我喜欢使用 Mat 读取图像并转换为 array2d 因为 dlib 仅支
  • 如何进行Visual Studio格式字典初始化?

    所有 Visual Studio 也包括 2012 不格式化以下内容 messageProcessor new Dictionary
  • C++ 中可以使用匿名类作为返回类型吗?

    有没有办法在 C 中使用匿名类作为返回类型 我用谷歌搜索这可能有效 struct Test fun 但是这段代码无法编译 错误信息是 新类型不能在返回类型中定义 其实代码没有任何意义 我只是想弄清楚匿名类是否可以用作C 中的返回类型 这是我
  • 在 T4 代码生成中,如何从引用的程序集中获取类型?

    由于 T4 在项目上下文之外运行 因此我无权访问当前程序集或其他程序集 如何注册对引用程序集的访问 然后从中获取类型 我猜您想访问项目中建筑物的程序集 我在下面的示例代码中所做的是将一个名为 TestLib 的项目添加到我的解决方案中 我将
  • 仅针对某些异常类型中断

    我知道异常处理是一件非常重要的事情 我们在所有项目中都在这样做 主要原因是记录客户发生的错误 这工作正常 根本不是问题 但是 当我仍在使用 Visual Studio 编码和运行应用程序时 我根本不需要任何异常处理 我希望调试器正好停在应用
  • 使用正则表达式解析日志文件

    我目前正在为我们的内部日志文件 由 log4php log4net 和 log4j 生成 开发一个解析器 到目前为止 我有一个很好的正则表达式来解析日志 除了一个烦人的一点 一些日志消息跨越多行 我无法正确匹配 我现在的正则表达式是这样的
  • Moq - 是否可以在不使用 It.IsAny 的情况下设置模拟

    我一直使用 Moq 进行单元测试 有时我会嘲笑有很多参数的方法 想象一下这样的方法 public class WorkClient public void DoSomething string itemName int itemCount
  • 我应该使用 Helgrind 还是 DRD 进行线程错误检测?

    好像Valgrind http valgrind org docs manual manual html有两个工具都可以进行线程错误检测 Helgrind http valgrind org docs manual hg manual ht
  • 使用 C# 的异步 WebRequest

    您好 我有一个函数 它将 url Get 参数传递到网络服务器上的 php 文件 并等待文件的响应 通常需要 10 20 秒 我想将其放入一个循环中 因为我必须一次将这些 Get 请求发送到大约 5 个不同的 php 文件 但是当我尝试将其
  • 来自用户定义文字的整数字符序列,以字符串作为参数

    目前 只有双精度数可以在用户定义的文字中生成字符模板 template
  • C# XML 反序列化。将节点中的所有内部文本读取到字符串属性中

    我目前正在尝试修改我的类 以便我的模型上的文本属性包含某个节点的所有内部文本 text node 给我带来问题的 xml 示例是
  • 如何编写完全可移植的 4 字节字符常量的编译时初始化

    遗留 代码大致如下所示 define MAKEID a b c d UInt32 a lt lt 24 UInt32 b lt lt 16 UInt32 c lt lt 8 UInt32 d define ID FORM MAKEID F
  • 查找文本文件中每行的行大小

    如何计算每行中的字符或数字数量 是否有类似 EOF 的东西更像是行尾 您可以遍历行中的每个字符并不断增加计数器直到行尾 n 遇到 确保以文本模式打开文件 r 而不是二进制模式 rb 否则流不会自动将不同平台的行结束序列转换为 n 人物 这是
  • 使用 List.Contains 方法为 LINQ 构建表达式树

    Problem 我正在重构一些LINQ查询我们的 Web 应用程序中的多个报告 并且我尝试将一些重复的查询谓词移至它们自己的中IQueryable扩展方法 以便我们可以将它们重新用于这些报告以及将来的报告 正如您可能推断的那样 我已经重构了
  • 在地图上使用 find

    如何使用 find 和 aconst iterator如果你有一个地图定义为 typedef std pair

随机推荐

  • 为什么 LocalBroadcastManager 无法在服务中工作?

    我使用了服务 但没有收到任何广播消息 需要快速反应 这是我使用的意图过滤器字符串 public class AppConstant public static final String FILTER com sample hmi REQUE
  • 重叠的极坐标图和散点图

    感谢这非常有帮助post https stackoverflow com questions 9071084 polar contour plot in matplotlib best modern way to do it 我终于弄清楚如
  • 如何监控每个scroll Id的scroll API使用的资源?调用clearScroll Api 时会发生什么

    如何监控每个滚动 ID 的滚动 API 使用的内存资源或搜索上下文 这些搜索上下文存储在哪里 有办法查看或监控它们吗 java api 的参数 keepAlive 意味着什么 public SearchRequest roll TimeVa
  • 嵌套推送动画iOS7 bug?

    我刚刚在经过错误测试的应用程序中遇到了问题 我把头撞到墙上才明白为什么会出现这个错误 2013 11 25 09 02 55 687 186 60b nested push animation can result in corrupted
  • 将原始文件复制到 SD 卡中?

    我的里面有一些音频文件res raw文件夹 由于某些原因 我想将此文件复制到我的 SDCard 当我的应用程序启动时 我怎样才能做到这一点 有人指导我吗 从资源中读取 写入SD卡上的文件 InputStream in getResource
  • Python 异常处理 - 最佳实践

    我正在编写一个访问数据库的 python 程序 我想在发出 http 请求时捕获三种类型的异常 超时 网络错误和 http 错误 我正在寻找处理这种情况的最佳方法 我需要在代码的多个区域多次检查这些异常 每次都会看起来像这样 try som
  • 将 scipy curve_fit 用于可变数量的参数

    我有一个拟合函数 其形式为 def fit func x data a b c N 其中a b c是长度为N的列表 其中的每个条目都是scipy optimize curve fit 中要优化的可变参数 N是用于循环索引控制的固定数字 下列
  • Html.EditorForModel 和隐藏编辑中的元素

    我使用以下代码使用 ASP NET MVC 3 为我的模型呈现编辑器 它工作完美 除了我不希望用户查看或编辑我的对象中的 Id 字段
  • psycopg2 ImportError 的 Django 错误:DLL 加载失败

    您好 当我尝试在虚拟环境中运行syncdb 时 我收到此错误 如果我将 psycopg2 文件夹复制到我的项目文件夹 其中我有manage py and settings py 然后这个错误就消失了 但是当代码推送到heroku时我仍然遇到
  • 导航栏下拉菜单不适用于移动设备

    我在 Bootstrap 3 中遇到了导航栏问题 我的菜单项之一是下拉菜单 它在我的笔记本电脑上运行良好 但在我的 Android 手机上不起作用 具体来说 当按下手机上的下拉菜单项时 没有任何反应 我已经在谷歌 这个网站和其他几个网站上搜
  • 排除子项目提交 Git

    我怎样才能排除Subproject commit 我在子模块中没有更改任何内容 仅从远程存储库中提取更改 我认为在创建子模块时 我在主存储库中提交了一些不需要的东西 有任何想法吗 1 当我创建子模块时git diff在主存储库中还显示 su
  • 如何完成删除文件流和所有附加文件

    我已经在本地数据库上尝试了 MSSQL 2008R2 数据中心 的 FILESTREAM 功能来进行实验 真正的数据库运行在服务器上 我已经使用以下查询设置了整个 FILESTREAM CREATE FILESTREAM AND FILES
  • 在闪亮的仪表板中永久更改标题标题颜色

    我有下面闪亮的仪表板 我需要永久更改包含标题的标题的颜色 现在 当我将鼠标悬停在其上时 它会返回到之前的颜色 library DT ui lt dashboardPage dashboardHeader title Dynamic side
  • Android 6.0 上的 Android 文件权限

    我想列出下面的文件和目录 proc 在安卓中 当作为我的应用程序进程运行时 许多文件不可读 如果我将目录列为shell用户我得到以下输出 shell flounder whoami shell shell flounder system b
  • “永久”SessionFactory、ASP.NET MVC 和 nHibernate

    我一直在使用 Fluent nHibernate ASP NET MVC 构建一个应用程序 我已经深入研究并发现保持 永久 SessionFactory 打开 然后对数据库的每个请求使用会话被认为是最合适的做法 好吧 这听起来不错 不过 我
  • iOS僵尸检测

    在我看来 我的代码中遇到了一个非常困难的问题 它在代码中的不同位置随机崩溃 该项目是一个ARC项目 所以我的程序偶尔会崩溃并显示以下消息 malloc error for object 0xd2dd8b0 incorrect checksu
  • 使用正则表达式计算字符串中的元音

    我刚刚开始学习 JavaScript 却陷入了正则表达式的困境 该程序应该计算输入字符串中元音的数量并显示元音 如果元音没有放在一起 程序运行良好 但如果元音出现在一起 则不会给出正确的值 e g 树 元音将显示为 ee 计数将为 1 Ty
  • RabbitMQ C# API:如何检查绑定是否存在?

    使用 RabbitMQ C API 我如何检查给定队列到给定交换是否存在绑定 很多 RabbitMQ 调用都是幂等的 所以有些人可能会说在这些情况下检查是不必要的 但我认为它们在测试中很有用 您可以使用他们的 REST API 来调用并查看
  • 为什么 sockJS 将“/info”添加到给定的 websocket url 路径

    我想打开一个带有 webapp socket do 路径的 websocket 端口 当我使用 SockJS 并尝试通过代码发起调用时 var socket new SockJS webapp socket do stompClient S
  • sizeof(*ptr) 和 sizeof(struct) 之间的区别

    我尝试了以下程序 struct temp int ab int cd int main int argc char argv struct temp ptr1 printf Sizeof struct temp d n sizeof str