首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C中的奇怪行为

C中的奇怪行为
EN

Stack Overflow用户
提问于 2012-09-17 08:25:34
回答 6查看 130关注 0票数 1

可能重复: Can a local variable's memory be accessed outside its scope?

最近我发现了以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>

int* abc () {
   int a[3] = {1,10,100};
   return a;
}
int* xyz () {
   int b[1] = {222};
   return b;
}
int main() {
   int *a, *b;
   a = abc();
   b = xyz();
   printf("%d\n", *a);
   return 0;
}

输出为222'a'指向在xyz()中声明的数组。

我的问题是:

  1. 为什么指向在xyz()中声明的数组。
  2. 函数xyz()中声明的数组应该在函数执行后超出作用域。为什么不发生这种事?
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-09-17 08:27:15

您可能会看到222,因为用于abc中的本地数组的内存已被用于其他东西--函数xyz的堆栈。你把一个地址传递到那个记忆里。再进行几次函数调用,*a可能包含一些其他值。

应该在函数执行后超出范围。为什么不发生这种事?

这个变量已经超出了范围。使用函数外部的地址是不正确的代码:使用指向函数返回的本地数据的指针是未定义的行为。

票数 3
EN

Stack Overflow用户

发布于 2012-09-17 08:28:35

2:它正在发生,整个程序都有未定义的行为。这不是一个正确的程序,也没有什么意义去思考如果和但是。

票数 8
EN

Stack Overflow用户

发布于 2012-09-17 08:27:46

变量ab是自动变量;在其他函数中使用它们的入口是一种未定义的行为。任何事情都可能发生:您不能期望输出(例如,优化编译器可以删除一些非法代码)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12463405

复制
相关文章
delete的奇怪行为
F的实例拥有一个value属性,但不希望在new的时候就初始化属性值(因为这个值不一定用得到,而且计算成本比较高,或者new的时候还不一定能算出来),那么自然想到通过定义getter来实现“按需计算”:
ayqy贾杰
2019/06/12
2.3K0
开发中奇怪的问题
不修改代码前好好的,刚加了些代码运行就不可以了,然后注释重新编译还是不行。
Qt君
2019/12/16
1.5K0
C 和 C++ 中的未定义行为
theme: channing-cyan highlight: a11y-dark
鲸落c
2022/11/14
4.4K0
taskscheduler java_java – taskScheduler池的奇怪行为「建议收藏」
我有两个弹簧启动应用程序(1.4.3.RELEASE),它们位于同一台服务器上.应用程序A是一个单一的应用程序,其中包含用于处理警报的部分代码,而应用程序B是一个仅处理警报的新专用应用程序.这里的目标是打破小应用程序中的monolotic应用程序.现在,这两个代码一起运行,因为我有旧系统,总是调用应用程序A.
全栈程序员站长
2022/11/10
1.8K0
iOS 中各种奇怪的崩溃
注意,本文所有崩溃的原因都是同一个 EXC_BAD_ACCESS (code=1, address=0x11f645b98) image-20210423232626879 第一个堆栈:字典扩容 im
酷酷的哀殿
2021/04/26
1.7K1
iOS  中各种奇怪的崩溃
NIO中那些奇怪的Buffer
妖魔鬼怪快快显形,今天F师兄帮助小师妹来斩妖除魔啦,什么BufferB,BufferL,BufferRB,BufferRL,BufferS,BufferU,BufferRS,BufferRU统统给你剖析个清清楚楚明明白白。
程序那些事
2020/07/07
9150
Shell中各种奇怪的变量
这些变量是随系统运行而变化的,灵活使这些变量可简化我们的操作和更好地控制bash shell的行为。
老高的技术博客
2022/12/27
5490
细数 TS 中那些奇怪的符号
TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。
阿宝哥
2020/09/10
5.9K1
细数 TS 中那些奇怪的符号
C++11 async那些奇怪的问题
C++11标准增加async接口,便于异步执行任务,使用async会遇到两个奇怪的问题:
gaigai
2019/08/30
1K0
PHP中in_array奇怪的问题
    按正常来说,这个肯定不在数组中,输出应该是false,但是这段代码输出却是true。
XiaoA
2023/05/24
4490
Python中的9个“奇怪”的现象
最近在网上偶然发现了很多“奇怪”的Python代码片段。本文,我与你们分享其中一些。
一墨编程学习
2019/05/10
9450
Python中的9个“奇怪”的现象
C# 中的“智能枚举”:如何在枚举中增加行为
在这个示例中,我们定义了一个名为 Weekday 的枚举,其中包括每个星期的日子。然后在 Main 方法中,我们将 today 变量设置为 Tuesday,并使用 ToString() 方法将其转换为字符串。
郑子铭
2023/08/30
3180
C# 中的“智能枚举”:如何在枚举中增加行为
C#的“智能枚举”:在枚举中增加行为?
在这个示例中,我们定义了一个名为 Weekday 的枚举,其中包括每个星期的日子。然后在 Main 方法中,我们将 today 变量设置为 Tuesday,并使用 ToString() 方法将其转换为字符串。
郑子铭
2023/08/30
4040
C#的“智能枚举”:在枚举中增加行为?
JavaIO之:NIO中那些奇怪的Buffer
妖魔鬼怪快快显形,今天F师兄帮助小师妹来斩妖除魔啦,什么BufferB,BufferL,BufferRB,BufferRL,BufferS,BufferU,BufferRS,BufferRU统统给你剖析个清清楚楚明明白白。
子润先生
2021/06/22
5590
React 中的一个奇怪的 Hook
你可能已经注意到 React Hook 中有一个名为 useMemo 的奇怪的钩子。这个奇怪的钩子意味着什么,它的作用是什么?重要的是,它是怎样为你提供帮助的?
前端迷
2019/12/20
1.8K0
Linq to xml API中 XName 的奇怪实现
    最近,在使用LinqToXml的时候,使用到其中一个重要的类:XName。它表示一个XML元素/XML属性的“名字”。    System.Xml.Linq中的API,大量使用了这个类,如:
用户1172223
2018/01/26
9830
奇怪的知识
而数据中台则是将数据服务化之后提供给业务系统, 目标是将数据能力渗透到各个业务环节
solve
2022/03/30
8240
视频中奇怪数字和设计的起源
在本次演讲中,主讲人希望回顾视频技术发展的历史,并试图理解为什么在现代视频和媒体系统中存在的看起来很奇怪的数字和设计,同时他们背后的原因是什么,他们是如何产生的。
用户1324186
2022/04/11
7560
奇怪的电梯
§、奇怪的电梯(lift.cpp) §【问题描述】 §大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢? §【输入格式】lift.in §输入文件共有二行,第一行为三个用
attack
2018/04/12
1.5K0
用C++模拟"奇怪"的手机计算器
风水轮流转,出道多年一向默默无闻的手机计算器突然成了网红,类似手机计算器“全线阵亡”这样的言论充斥各种媒体。问题的起源是网友发现手机计算器上计算10%+10%这样的小学数学范畴的运算时,手机计算器得出的结果并不是标准数学答案0.2,而是让人觉得有点奇怪的0.11!这是不是手机计算器软件设计者出现的bug呢?
诸葛青云
2019/10/07
8750
用C++模拟"奇怪"的手机计算器

相似问题

c()中的奇怪行为

33

奇怪的C行为

20

奇怪行为[c]

22

C:奇怪的行为

13

C++中的奇怪行为

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文