无法理解让我们C静态存储类示例[重复]

2024-06-30

我无法理解 Yashwant Kanetkar 的 Let us C 中的示例。这是代码片段:

main()
{
    int *j;
    int *fun();
    j = fun();
    // If we add a function call here, the print statement prints a garbage value.
    printf("\n%d",*j);
}

int *fun()
{
    int k = 35;
    return (&k);
}

现在在上面的代码中,我无法理解为什么在 printf 语句之前调用函数会导致打印垃圾值。我有一个模糊的想法,由于返回的值指向堆栈中的内存位置,因此在打印该值之前调用另一个函数时会出现问题。但我无法清楚地想象这里发生的事情。请帮忙。


在你的代码中

int *fun()
{
    int k = 35;
    return (&k);
}

您正在返回局部变量的地址fun()。任何返回值的使用都会导致未定义的行为 http://en.wikipedia.org/wiki/Undefined_behavior.

解释一下,一旦函数fun()执行完毕,不存在k。所以,尝试使用类似的东西&k是无效的。

Note: Whatever the explanation is provided in that particular book [related to stack flushing or so], is not standardized in c.

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

无法理解让我们C静态存储类示例[重复] 的相关文章

  • 如何在Azure函数应用程序中调用函数后动态更改内容

    我正在使用 Visual Studio 2019 使用 Azure function v3 0 开发 Azure function 应用程序 我实现了一个时间触发的功能 我想更改内容 时间表 function json function j
  • 生成一定范围内的 N 个随机数,其总和为常数

    我想生成从 a b 之间的特定分布 例如均匀随机 抽取的 N 个随机数 其总和为常数 C 我尝试了一些我自己能想到的解决方案 以及在类似线程上提出的一些解决方案 但是他们中的大多数要么适用于有限形式的问题 要么我无法证明结果仍然遵循所需的分
  • 同一个盒子上的进程间通信 - 2 个应用程序或进程之间的通信

    在同一机器上的应用程序之间实现进程间通信的最佳方法是什么 两者都是用 C 编写的 管理器应用程序将向其他应用程序发送命令 例如 停止 启动 它还将监视应用程序并可能要求提供数据 所有应用程序都将在同一台运行 Windows 7 操作系统的计
  • 使用脚本取消设置 PDF 字体

    我正在使用 xhtml2pdf 库自动创建 PDF 几个月前我有过这个问题 https stackoverflow com questions 25203219 xhtml2pdf doesnt embed helvetica 库嵌入了我没
  • C# 中线程之间发送消息

    如何在线程之间发送和接收消息 例如 一种解决方案是共享并发队列 尽管它的名称 并发队列 http msdn microsoft com en us library dd267265 aspx 这将允许您将一个对象从一个线程入队 并让另一个线
  • HTTPS文件下载C#

    我需要下载隐藏在 HTTPS 连接后面的文件 我对下载安全网站后面的文件不熟悉 我尝试使用凭据来解决此问题 但无济于事 据我所知 您需要创建并使用证书来完成此操作 但我没有找到任何示例 任何帮助表示赞赏 这就是我现在所拥有的 WebClie
  • C++11 中的延迟初始化顺序

    考虑以下代码 分为三个编译单元 a h struct A void Register const char s const char m s 10 int m i 0 A GetA a cpp include a h include
  • 分段错误(核心转储)

    当我尝试运行此程序时 出现分段错误 核心转储 它编译完美 但我收到错误 我不知道为什么 我已尝试以所有可能的方式编辑我的代码 但仍然收到此错误 我已经没有主意了 任何帮助都会很棒 谢谢 unsigned short reg NULL int
  • 在 C# 中创建新 List 的这三种方式有什么区别?

    这三种创建新的方式有什么区别List
  • cmake:如何在只有 target_link_directories (没有 target_link_libraries)的共享库中设置 rpath?

    我的项目的目标如下 从我的主可执行文件中 我想加载一个库 libfoo so 加载第二个库 libbar so 我不想在任何路径中指定相对或绝对路径filename我传递给的参数dlopen 即我希望我的代码读取 dlopen libfoo
  • 泛型类中可空的泛型字段

    我正在尝试做这样的事情 public class MySuperCoolClass
  • UWP 导航 (Template10)、枢轴控制、多帧

    我正在尝试在我的 UWP 应用程序中实现以下导航样式 使用 Template10 但正在努力如何使用多个帧作为独立的历史堆栈 在枢轴的每个框架内 我希望有一个独立的框架 它有自己的历史记录和后堆栈 只能通过枢轴在框架之间导航 我正在考虑使用
  • elmah定制提供商及暴露事件

    我想知道如何创建自定义提供程序来存储错误日志 例如 Windows 事件查看器的提供者 如果到目前为止不可能 我还想知道是否有任何可以覆盖的公开事件 以便我可以注入我的代码 获取异常 做任何我想做的事情 我知道 Global asax 中有
  • 如何在单击按钮时关闭 .exe 应用程序

    谁能告诉我如何使用 C 在单击按钮时关闭 exe 文件 我知道如何使用 C 在单击按钮时运行 exe 文件 如下所示 string str C windows system32 notepad exe process StartInfo F
  • 如何从 C 函数中返回多个值?

    如果我有一个产生结果的函数int和一个结果string 如何从函数中返回它们 据我所知 我只能返回一件事 这是由函数名称前面的类型决定的 我不知道你的是什么string是的 但我假设它管理自己的内存 您有两种解决方案 1 返回一个struc
  • 将“列表”项附加到 StringBuilder

    我尝试将项目附加到List
  • 如何从源代码编译picoProlog?

    我是计算机科学专业的学生 正在学习 Prolog 逻辑编程 我发现了一个有趣的 Prolog 解释器 picoProlog http spivey oriel ox ac uk corner Logic Programming http s
  • 如何确保 IsInRole 检查不使用缓存的凭据

    我有一个连接到 WCF 服务的 WPF 客户端 我想锁定某些功能 以便只有某些用户可以执行某些操作 WCF 服务在执行服务方法时模拟客户端用户 操作系统是Windows XP 我正在读书这个问题 https stackoverflow co
  • Dapper 中的自定义映射

    我正在尝试使用带有 Dapper 和多重映射的 CTE 来获取分页结果 我遇到了重复列的不便 例如 CTE 阻止我命名列 我想将以下查询映射到以下对象 而不是列名和属性之间的不匹配 Query WITH TempSites AS SELEC
  • “auto_ptr”和 STL 容器:编写错误用法的示例

    读完本教程后提出这个问题 http www cprogramming com tutorial auto ptr html http www cprogramming com tutorial auto ptr html 在那里你可以找到以

随机推荐

  • Android Wear 应用程序无法连接到 google api 服务

    我正在尝试在 Android Wear 和 Android 手机之间建立连接 googleApiClient 连接失败 并返回 SERVICE VERSION UPDATE REQUIRED 状态代码 我究竟做错了什么 这是我的活动代码 O
  • 为什么会生成警告 CS1607“为‘产品版本’指定的版本不是正常的‘major.minor.build.revision’格式”?

    今天我得到了一个为 产品版本 指定的版本不是正常的 major minor build revision 格式警告 这与使用有关AssemblyInformationalVersionAttribute http msdn microsof
  • cuda nvcc使__device__有条件

    我正在尝试将 CUDA 后端添加到 20k loc C 表达式模板库 到目前为止 它工作得很好 但我完全被淹没了 warning calling a host function from a host device function is
  • 循环引用和ScriptIgnore问题

    我有几个相互引用的 BusinessObject 类 我需要在 JsonResponse 中序列化一个类并将其返回到我的视图 我不断收到循环引用异常 但无法摆脱它 我已经放置了 ScriptIgnore 每个不是简单数据类型属性的属性上的装
  • getWritableDatabase() 抛出空指针异常

    我有一个具有以下代码的服务类 public class ReminderService extends WakeReminderIntentService private static final String TAG ReminderSe
  • 如何将 pandas DataFrame 与 sklearn 结合使用?

    我的项目的目标是预测一些文本描述的准确性水平 我用 FASTTEXT 制作了向量 硅通孔输出 0 1 0 0033524514 2 0 021896651 3 0 05087798 4 0 0072637126 1 1 0 00311814
  • Spring Data OrientDB 已做好生产准备吗?

    我有一个 Spring 项目 我非常想使用 Spring Data OrientDB 生产准备好了吗 或者我应该只使用 Graph API 或蓝图 None
  • 检查警报框中单击“确定”按钮

    这是用于提醒某些值的代码 alert Click the OK button Now 所以现在我想检查是否单击了 确定 按钮 我怎样才能使用这个 JavaScript 来做到这一点 确认可以工作 var r confirm Click th
  • JavaFX 本机捆绑包图标 OS X

    我正在尝试使用 IntelliJ IDEA 14 为 JavaFX 应用程序创建本机 OS X 应用程序包 我已经设置了一个 Artifact 并将本机包选项设置为 dmg 这确实创建了一个本机捆绑包 但我似乎找不到更改应用程序图标的方法
  • 安装atomic (1.1.16) 时出错,Bundler 无法继续

    我正在尝试创建一个新的 Rails 应用程序 但在捆绑时会出现此错误 这是我第一次遇到这个错误 Gem files will remain installed in usr local rvm gems ruby 1 9 3 p448 ge
  • 获取AppKernel.php中的parameters.yml参数

    有人知道如何获取 AppKernel php 中的parameters yml 或 dev 吗 我想动态更改 LogGer 变量 mylogsdir 应用程序内核 php this gt rootDir this gt environmen
  • 第一次使用CodeBuild时出现错误

    当作为简单代码管道的一部分启动代码构建时 我在几秒钟内收到以下错误 Action execution failed Error calling startBuild Cannot have more than 0 builds in que
  • Webpack 加载器中的“包含”和“排除”如何工作

    更新及解答 我的误解是 所有导入 所需的文件都将由加载程序转换 但是 某些导入 所需的文件不需要转换 例如 node module 中的js文件已被处理 所以不需要再通过Babel loader进行改造 这基本上就是为什么我们需要在加载程序
  • MVC网站-如何防止访问静态文件

    我有一个 MVC 网站 没有身份验证 在网站目录中 我有一个文件夹 ProjectNotes 其中包含一个文件 Notes txt 此文件夹和文本文件都不是解决方案的一部分 但仍会在发布时复制 我的问题是 任何人都可以使用网络浏览器访问 m
  • 使用 C# 强制本地用户在下次登录时更改密码

    我正在为 ASP NET 中的 Web 应用程序编写一个函数 其中客户端登录到服务器计算机 该服务器计算机是针对服务器上的本地用户进行 Windows 身份验证的 我正在编写的函数会重置用户密码并通过电子邮件向他们发送新密码 我这样做 St
  • 打印当月每周的第一个星期一 Flutter/Dart

    我的 Flutter 应用程序中有一个日历 我需要打印当月的几周列表 但不是从每个月的第一天开始 而是需要从该月的第一个星期一开始 例如 2021 年 4 月 5 日作为 2021 年 4 月的第一个星期一 然后我需要打印出该月接下来的几周
  • Tampermonkey 用户脚本可以访问 Chrome API 吗?

    我正在开发一个需要的用户脚本chrome对象 但我无法访问它 如何访问chrometampermonkey 用户脚本中的对象 也许 清单中的一些权限或者什么 参考Chrome 扩展代码 vs 内容脚本 vs 注入脚本 https stack
  • WPF 数据网格性能

    我正在使用 WPF Toolkit 数据网格 它目前滚动速度非常慢 该网格有 84 列和 805 行 包括 3 个固定列 标题是固定的 水平和垂直滚动都非常慢 虚拟化已打开 并且我已在 xaml 中显式启用列虚拟化和行虚拟化 是否有什么需要
  • IE8安全警告

    在我正在处理的 https 网站上 我不断收到 您只想查看安全传送的网页内容吗 此网页包含不会使用安全 HTTPS 连接传送的内容 这可能会损害网站的安全性整个网页 我确保该网站有相关链接 表单操作也是相对的 所有图像 src 也是相对的
  • 无法理解让我们C静态存储类示例[重复]

    这个问题在这里已经有答案了 我无法理解 Yashwant Kanetkar 的 Let us C 中的示例 这是代码片段 main int j int fun j fun If we add a function call here the