更改外部变量的值

2024-01-03

我们在 File1.c 中有

int arr[10];

在 File2.c 中

extern int *arr;

int main()

{
   arr[0]=10;
   return 0;
}

这样做可能会出现哪些问题以及为什么?


数组不是指针。内存访问将会出错。

In File1.c,你有内存布局:

+---+---+---+---+---+---+---+---+---+---+
+ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+---+---+---+---+---+---+---+---+---+---+
^
arr

In File2.c,你已经告诉编译器你有内存布局:

+-------+
|  ptr  |
+-------+
^
arr

其中指针大概指向可以存储整数的某个地方。

编译器必须做完全不同的事情才能访问extern int *arr; from extern int arr[];.

正如所写,最可能的结果是编译器取消引用空指针时崩溃。不过,行为是未定义的,一切皆有可能。你对编译器撒了谎;编译器会得到自己的回报——它不喜欢被欺骗。

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

更改外部变量的值 的相关文章

随机推荐

  • 使用 JUnit 5 并行执行测试用例

    是否可以与 JUnit 5 并行执行测试用例 我正在寻找类似的东西threadPoolSize and invocationCount from TestNG http testng org doc documentation main h
  • 为 string.Contains 构建表达式树[重复]

    这个问题在这里已经有答案了 我正在努力构建一个表达式树 以便我可以动态地对某些数据进行过滤 我已经想出了这个 但它失败了var lambda line foreach var rule in request Where Rules var
  • 是什么使 Bean 成为 CDI Bean?

    例如 在这个问题的最佳答案中 Java EE 6 javax annotation ManagedBean 与 javax inject Named 与 javax faces ManagedBean https stackoverflow
  • 空类构造函数(样式)

    什么是定义不需要任何构造函数参数的类的 Pythonic 方法 class MyClass class body 或者我们需要一个显式的构造函数吗 IE class MyClass def init pass class body 您的第一
  • 视频缩略图

    我正在开发一个人们可以提交视频链接的网站 然后我就嵌入它 但是 我想获取视频的缩略图而不将视频保存在我的服务器中 这样当我列出视频时 我可以使用缩略图而不是嵌入所有视频 我的服务使用 PHP 假设视频为 SWF 格式 或标签中是否有任何内容
  • CKEditor - 无工具栏

    所以我得到了一个textarea with CKEditor插件 但我只想让它干净 没有任何东西 没有工具栏 没有状态栏或任何栏 这很简单 但我在文档或网络上找不到它 My CKEditor开始于 texto ckeditor skin o
  • 升级到 Swift 3 后,属性“self.delegate”未在 super.init 调用中初始化

    升级到 Swift 3 后 我现在收到此错误 属性 self delegate 未在 super init 调用时初始化 在 NSObject 类上定义 open class NSObject NSObjectProtocol public
  • Android Oreo WebView 在第二次加载后渲染布局太小

    在某些 Android Oreo 设备上 当我第一次在 webview 上加载 url 时 URL 页面会正确加载 但是 当我再次加载 URL 时 页面会缩小 在低于 android oreo 的设备上 页面可以为所有设备正确加载 此外 当
  • VS2008 中“<<”和“++”的运算符优先级优化

    我遇到了一个奇怪的 VS2008 C 问题 看起来运算符优先级没有得到尊重 我的问题是这个的输出是什么 int i 0 std cout lt lt i 0 Not zero zero lt lt i lt lt std endl 通常情况
  • 如何在 WordPress 主题中包含 jQuery?

    我对 WordPress 还很陌生 我正在研究如何将 jQuery 包含到主题中 我将以下函数创建为函数 php theme function load java scripts Load FlexSlider JavaScript tha
  • 在选项卡栏开关上弹出到根导航控制器时出现问题

    尝试模仿 复制内置地址簿 特别是从 电话 应用程序内部编辑联系人或查看现有联系人信息时的行为 当您导航到另一个选项卡时 编辑状态将重置 并弹出 新联系人 或 信息 视图 以便当您返回 联系人 选项卡时 您将返回到根表视图 我使用 setEd
  • 如果没有锚点,则无法使用菜单弹出帮助程序

    我想在操作栏中使用弹出菜单项 当我在活动中使用它时一切正常 但是当我切换到片段时我得到 MenuPopupHelper cannot be used without an anchor 我的片段 Override public boolea
  • Django __str__ 返回非字符串(类型 NoneType)

    我正进入 状态 str returned non string type NoneType 编辑时出错Product模型对象 产品型号 class Product models Model ProductName models CharFi
  • 无法在 Ubuntu 18.04 LTS 上安装 rstanarm

    我无法安装rstanarm on R 3 5 3运行于Ubuntu 18 04 LTS 我使用了以下命令 install packages rstanarm and devtools install github stan dev rsta
  • 如何直接从 R 控制台打开工作目录?

    我怎样才能打开我的getwd 直接从 R 控制台获取文件夹 如果我想查看我最近刚刚导出到那里的东西 这很有用 谷歌搜索没有透露任何信息 我没有能力构建一个函数 如果您确实想要一个文件浏览器 您可以创建一个函数来打开目录 根据您使用的操作系统
  • 导入错误:使用 Azure SDK 时无法导入名称会话

    我正在使用 Azure SDK 运行代码 首先 我通过下载sdkpip install azure 然后我编写运行以下 python 代码 import requests import os make sure you configure
  • Rails Basecamp 风格子域最佳实践

    我的目标是为每个子域拥有单独的用户帐户 在任何情况下 我都不想在子域之间进行异花授粉 我看过了罗比 拉塞尔 http www robbyonrails com articles 2009 01 11 subdomain accounts w
  • 从 url mysql 或 python 中提取模式编号

    我有一堆 url 其中有一个字符串 hotel 4 digit number hotel1234 or slash 4digit html 1234 html 是否有正则表达式可以使用 python 或 mysql 提取 4 位数字 例如
  • 在 AWS Lambda 上使用来自 Python 的 NodeJS 4 脚本

    问题 我有一个在 AWS Lambda 上运行的 Python 脚本 该脚本正在使用subprocess执行 NodeJS 4 脚本 我尝试过什么 subprocess check output my script js 得到非零结果 得到
  • 更改外部变量的值

    我们在 File1 c 中有 int arr 10 在 File2 c 中 extern int arr int main arr 0 10 return 0 这样做可能会出现哪些问题以及为什么 数组不是指针 内存访问将会出错 In Fil