为什么这个作业在函数之外不起作用?

2023-12-10

这是我正在发生的事情的一个例子。第一段代码将不起作用。

typedef struct {
    char *desc;
    unsigned quantity;
} item;

item *inventory[INVENTORY_SIZE];

item thing = { "This is a thing.", 2 };
inventory[0] = &thing;  // Fail.

int main(void){
    // Code goes here.
}

不过,下面的代码可以工作。

typedef struct {
    char *desc;
    unsigned quantity;
} item;

item *inventory[INVENTORY_SIZE];

item thing = { "This is a thing.", 2 };

int main(void){
    inventory[0] = &thing;  // Works.
}

我知道我不能在函数外部调用函数,但我可以在函数外部分配全局变量。这看起来像是一个任务。那么为什么它不起作用呢?

编辑:当我点击“发布”时,我想我意识到了答案。您可以在函数外部的声明中赋值,但前提是它是声明。这就是答案,不是吗?


当我们写:

data_type variableName = someValue;

这意味着我们首先声明变量名是一个变量,并且类型为数据类型。随后,立即完成值的分配,因为这是分配给的第一个值变量名,它也将其初始化为一些值.

这是允许的。这是一种特殊类型的函数,系统函数,称为初始化。

但写作

variableName = someValue;

意味着我们正在尝试分配一些值 to 变量名在任何函数的范围之外,并且在初始化的范围之外。

在函数之外这是不可能的。

代码仅在被调用函数内执行,初始化除外,初始化是在初始赋值期间发生的。

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

为什么这个作业在函数之外不起作用? 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • JavaScript 新关键字和对象范围

    今天晚些时候 我滚动浏览 ejhon com 幻灯片 发现了以下内容 给这个代码 function katana this myvar true katana console info myvar 在我编译代码的那一刻 我认为 myvar
  • 将 `params` 和 `session` 以及 `env` 添加到对象

    在我正在写的宝石中 我正在尝试添加机架方法params session and env to Object以便gem的用户可以访问和修改它们 我尝试过使用Object instance variable set and Object ins
  • 获取iPhone照片曝光信息

    有没有办法获取 iPhone 拍摄的照片的曝光设置 光圈 快门速度 ISO 在 iPhone 上运行的应用程序可以使用 UIImagePickerController 接口来拍照 但这并不能提供有关图片的太多信息 iPhone 拍摄的照片的
  • Angular Material MatChipList - 如何在动态 FormArray 上使用它?

    堆栈闪电战 这是我的 FormArray 变体 this productGroup this fb group name variants this fb array this fb group type options 我在用着MatCh
  • 使用 LINQ 和 Lambda 加入/Where

    我在使用 LINQ 和 Lambda 编写的查询时遇到问题 到目前为止 我遇到了很多错误 这是我的代码 int id 1 var query database Posts Join database Post Metas post gt d
  • Twisted Python 失败 - Scrapy 问题

    我正在尝试使用 SCRAPY 来抓取该网站的任何搜索查询的搜索结果 http www bewakoof com 该网站使用AJAX 以XHR的形式 来显示搜索结果 我设法跟踪 XHR 您会在我的代码中注意到它 如下所示 在 for 循环内
  • 无法加载 CIFAR-10 数据集:加载键“\x1f”无效

    我目前正在 TensorFlow 中尝试一些神经网络 我决定尝试使用 CIFAR 10 数据集 我从网站下载了 CIFAR 10 python 数据集 https www cs toronto edu kriz cifar html 在Py
  • Swift 在 0 和 1 之间随机浮动

    在 Swift 中 我试图获得 0 和 1 之间的随机浮点数 但我似乎无法让类型转换起作用 func randomCGFloat gt CGFloat return CGFloat arc4random UINT32 MAX 我收到 CGF
  • 从 zend 框架 url 中删除 index.php

    我正在使用 zend 框架开发一个模块 并且我已经使用 zf create project 创建了一个项目 命令 当我尝试使用访问网址时ip folder controller action当我尝试使用访问时 它给出错误未找到错误ip fo
  • Shenandoah 2.0 消除转发指针

    In Shenandoah 1 0每个对象都有一个额外的标头 称为forwarding pointer 为什么需要这样做以及导致其被消除的原因是什么Shenandoah 2 0 首先 每个 java 对象都有两个标头 klass and m
  • 在 jQuery 中,同时使用 resizing() 和draggable() 时如何修复包含错误? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 在 jQuery 中 同时使用 resizing 和d
  • R:如何根据列中的值添加行

    我有一个如下所示的数据框 line c 1 2 NA 4 5 NA 7 group c 1 0 Group A 2 0 Group B 3 0 Group C 4 0 Group D 5 0 Group E 6 0 Group F 7 0
  • simplexml 错误处理 php

    我正在使用以下代码 function GetTwitterAvatar username xml simplexml load file http twitter com users username xml imgurl xml gt p
  • shell中管道组件的执行顺序

    ls wc 按什么顺序ls and wc在这里执行 或者是 and wc只是论点ls 在表达式中ls wc 您的 shell 将大致执行以下操作 启动两个子 shell A 和 B A 的标准输出连接到 B 的标准输入 在子 shell A
  • 在 javascript 中设置子字符串的样式

    你好 我正在尝试使用 javascript 设置子字符串的样式 这是我的代码 function runtest document getElementById test1 innerHTML substring 0 2 style font
  • 结构的大小如何随不同数据类型而变化

    我使用的是 Linux 32 位操作系统 和 GCC 编译器 我尝试了三种不同类型的结构 在第一个结构中我只定义了一个char多变的 该结构的大小为 1 这是正确的 在第二个结构中我只定义了一个int多变的 这里结构的大小显示为 4 这也是
  • 与所定义的类具有相同类型的 static constexpr 成员

    我希望 C 类有一个 C 类型的静态 constexpr 成员 这在 C 11 中可能吗 尝试1 struct Foo constexpr Foo static constexpr Foo f Foo constexpr Foo Foo f
  • 持续运行后台服务

    我的目标是 sdk 版本 27 最低版本为 19 并尝试获得在后台持续运行的服务 我尝试了不同的服务启动选项 但它仍然被该应用程序杀死 我尝试使用 BroadcastReceiver 在服务被杀死时启动该服务 但这给了我一个错误 指出该应用
  • Cube.js 后端出现错误继续等待问题

    我在连接到 AWS 无服务器上的cube js 后端并在前端仪表板中执行 cubejs api v1 load 请求时遇到一些问题 我不断得到 error Continue wait 而不是返回结果 我遵循react dashboard指南
  • 为什么这个作业在函数之外不起作用?

    这是我正在发生的事情的一个例子 第一段代码将不起作用 typedef struct char desc unsigned quantity item item inventory INVENTORY SIZE item thing This