为什么我必须将内存地址转换为 (void *)? [复制]

2024-04-01

所以我现在只学习了 C 语言大约 3 周,我正在使用this https://www.youtube.com/watch?v=5BpYD7TxvKU教程帮助我理解指针。

我写的一切都和他一样,但我使用 Putty 和 Vim 来编写我的代码。然而,当我编译代码时,它说“警告:格式“%p”需要“void *”类型的参数“。为什么我必须强制转换才能输入“void *”,而在教程中他却没有这样做?

int main()
{
    int tuna = 19;
    int *pTuna = &tuna;

    printf("Address \t Name \t Value \n");
    printf("%p \t %s \t %d \n", pTuna, "tuna", tuna);

    return 0;
}

我已将 pTuna 转换为“void *”,程序编译并运行良好,但我不明白为什么以及为什么在教程中不需要转换。

谢谢您的回答!


它是编译器执行其主要工作之一类型检查您告诉它使用的值。pTuna is a 指向 int 的指针 (e.g. int *)和%p格式说明符需要一个generic (or void *) 指针。

编译器发出一个warning关于类型不匹配,告诉您再次查看问题并提供将使用的值的正确转换%p转换说明符。您遵守:

printf("%p \t %s \t %d \n", (void *)pTuna, "tuna", tuna);

再次编译——然后warning消失了,编译器已经完成了它的工作,一切又恢复正常了。 (是的,您可以忽略警告,但如果警告和无错误编译不是绝对的个人要求,那么可能值得添加。(是的,在某些情况下,警告可能是已知且不可避免的结果)一些实现,但这些实现很少而且相差很远。这里的这个不是其中之一。

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

为什么我必须将内存地址转换为 (void *)? [复制] 的相关文章

  • MongoDB C# 驱动程序检查身份验证状态和角色

    这是我使用 MongoDB 身份验证机制登录 MongoDB 的代码 try var credential MongoCredential CreateMongoCRCredential test admin 123456 var sett
  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • 如何知道并加载特定文件夹中的所有图像?

    我有一个应用程序 C Builder 6 0 需要知道特定文件夹中的图像总数 然后我必须加载它们 在 ImageList 或 ComboBoxEx 中 或任何其他控件中 我怎样才能做到这一点 我知道如何在控件中加载图像 或保存在 TList
  • 测试 hdf5/c++ 中的组是否存在

    我正在打开一个现有的 HDF5 文件来附加数据 我想向那个叫做的小组保证 A存在以供后续访问 我正在寻找一种简单的方法来创建 A有条件地 如果不存在则创建并返回新组 或者返回现有组 一种方法是测试 A存在 我怎样才能高效地做到这一点 根据
  • boost线程在中断时不打印退出消息

    我有这段代码用于执行三个线程 其中第二个线程应在按 Enter 时中断并打印退出消息 void input val DO STUFF return void process val DO STUFF try cout lt lt waiti
  • 实体框架代码优先 - 在另一个文件中配置

    使用 Fluent API 将表到实体的映射分开的最佳方法是什么 以便它全部位于单独的类中 而不是内联在 OnModelCreating 方法中 我目前在做什么 public class FooContext DbContext prote
  • .NET 可移植类库中的 .ToShortDateString 发生了什么

    我想知道为什么没有 ToShortDateString在 NET 可移植类库中 我有 2 个项目 Silverlight 和常规 NET 类库 使用相同的代码 并且代码涉及调用 ToShortDateString on a DateTime
  • 我应该在单元测试中使用 AutoMapper 吗?

    我正在为 ASP NET MVC 控制器方法编写单元测试 这些控制器依赖于IMapper 我创建的用于抽象 AutoMapper 的接口 使用 Castle Windsor 通过构造函数注入传入 动作方法使用IMapper从领域对象映射到
  • 浮点提升:stroustrup vs 编译器 - 谁是对的?

    在 Stroustrup 的新书 C 编程语言 第四版 第 10 5 1 节中 他说 在执行算术运算之前 整数提升用于从较短的整数类型创建整数 类似地 浮点提升是用于从浮点数创建双精度数 我用以下代码确认了第一个声明 include
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • 推送 Lua 表

    我已经创建了一个Lua表C 但我不知道如何将该表推入堆栈顶部 以便我可以将其传递给 Lua 函数 有谁知道如何做到这一点 这是我当前的代码 lua createtable state libraries size 0 int table i
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • 如何使用 g++ 在 c++ 20 中使用模块?

    我读了这个链接https gcc gnu org wiki cxx modules https gcc gnu org wiki cxx modules并尝试从该网站复制以下示例 我已经知道这个编译器部分支持模块系统 注 我用的是windo

随机推荐

  • 多种类型实体的数据库设计

    我需要开发一个应用程序 其中有 4 种类型的用户实体 管理员 合作伙伴 公司和客户 每种用户类型都有自己的一组详细信息 并且他们都应该能够执行常见操作 例如发送消息 付款等等 这些操作应保留在单个表中 但它们需要引用确切的用户 无论其类型如
  • Jasper Report 中的 Java Beans 列表中的 pass 列表

    我正在使用 Jasper Report 和 Servlet Bean 团队看起来像 private int tid private String title private List
  • HornetQ JMSException:无法创建会话工厂

    我正在尝试直接实例化 JMS 资源 而不使用远程 HORNETQ 的 JNDI 我正在 Eclipse IDE 中运行我的测试代码 设置我的类路径以使用 HornetQ 2 2 5 库 目标HornetQ是版本2 1 2 Final 我认为
  • 如何使用 C# 检索 .config 文件中的自定义配置部分列表? [复制]

    这个问题在这里已经有答案了 当我尝试使用检索 config 文件中的部分列表时 Configuration config ConfigurationManager OpenExeConfiguration ConfigurationUser
  • c#/.Net Socket.Shutdown

    我认识到此类问题已有很长的历史 但我使用此问题的方式必须是正确的 net 方式 但它似乎不起作用 我有一个简单的同步 IP 服务器守护进程 它执行一个简单的 AcceptSocket 执行一些操作 socket send socket sh
  • 如何在 jQuery 中发送 PUT/DELETE 请求?

    GET get POST post 关于什么PUT DELETE 你可以使用ajax http docs jquery com Ajax jQuery ajax options method ajax url script cgi type
  • 将 axios POST 请求与 moxios 匹配

    是否可以使用 moxios 模拟对 POST 请求的回复 不仅通过 URL 匹配 还通过 POST 正文匹配 事后检查尸体对我来说也很有用 这就是我现在正在做的事情 据我所知 没有特定于方法的存根方法 describe createCode
  • 应该创建多种文档类型或多个索引吗?

    我们为企业托管许多网站 每个企业都会有许多他们可能希望通过 ES 进行索引和搜索的文档类型 通常 每个业务拥有的文档类型数量少于 20 个 每个类型可能拥有少于 100k 个文档 通常要少得多 我不确定应该如何设置这些网站的数据 我应该将它
  • ice_cube 的营业时间

    我如何能够在单一时间表中规定餐厅的营业时间 周一至周五 8 点至 16 点非常简单 schedule Schedule new Time parse Date yesterday to s 8 00 duration gt 60 60 8
  • MVC 4 和 JsonResult 格式

    这段代码的结果格式有问题 public JsonResult getCategorias int id var res from c in db Categorias where id HasValue c CategoriaPadre i
  • 水平和垂直并排有许多小 div 和一个大 div?

    我应该如何创建这种结构 我的第一个想法是将四个粉红色组合成一个橙色 这样我就得到了 4pinksVS1orange 现在下一个难题是将它们并排放置 我不知道 好吧 我知道一些 hxcks 但它们很容易被打破 然后 拼图是底行有四个粉红色的拼
  • 浏览器中文本区域处理不一致

    这是我在下面提供的标记中看到的内容 没有一个浏览器将文本区域保留在容器中 这很不方便 但并不是什么大问题 然而 令人烦恼的是 无论我做什么 我都无法摆脱 Chrome 中文本区域的下边距 有什么建议么 Here is everything
  • JavaScript - 模拟单击​​上下文菜单

    我正在尝试为网站创建网络自动化 我正在模拟点击 通常我会向如下所示的元素添加 ID 并使用 Chrome 开发者控制台触发单击 并且它始终有效 p s 下面的问题已经过时了 我实际上正在尝试从 web whatsapp com 的上下文菜单
  • PyInstaller ImportError:没有名为“pyfiglet.fonts”的模块

    我正在尝试使用 PyInstaller 编译 Asciimatics 的演示脚本之一 希望最终能够为我正在开发的基于文本的游戏创建一个简单的 GUI 它返回以下错误 C Users X Documents Python Scripts as
  • 使用 DoubleClick“无法加载广告:3”

    我正在使用 DoubleClick 在 Android 应用程序中设置广告 但无法显示最终的广告 有人能帮我吗 当我通过添加 addTestDevice xxx 来测试广告时 我得到了测试广告 但是当我删除此行时 出现以下错误 W 广告 广
  • 隐藏 Woocommerce 订阅价格中的“免费试用”文本,但保留注册费

    问题的第一部分 隐藏 Woocommerce 订阅价格中的 免费试用 文本 在这篇很棒的帖子中得到了回答 隐藏 Woocommerce 订阅价格中的 免费试用 文本 https stackoverflow com questions 489
  • 隐藏滚动条(启用滚动)

    我有一个包含 2 列和多行的表 table border 0 tr td something td td div class bubble div td tr tr td something1 td td div class bubble
  • OpenCV (cv2) 中的 unactorPoints 与 Python 错误结果

    我尝试纠正图像和该图像上的一些点 校正图像效果非常好 这部分代码不是我提供的 mapx mapy cv2 initUndistortRectifyMap camera matrix dist coefs np array 1 0 0 0 1
  • 内存泄漏 - UIImagePNGRepresentation

    我正在尝试复制图像UIImagePicker到文档目录 我在用 UIImagePickerControllerOriginalImage key 从 UIImagePickerDelegate 的字典中获取原始图像 我正在使用将图像写入文件
  • 为什么我必须将内存地址转换为 (void *)? [复制]

    这个问题在这里已经有答案了 所以我现在只学习了 C 语言大约 3 周 我正在使用this https www youtube com watch v 5BpYD7TxvKU教程帮助我理解指针 我写的一切都和他一样 但我使用 Putty 和