gpt4 book ai didi

c++ - 在 C++ 中初始化结构,然后通过引用传递检索

转载 作者:行者123 更新时间:2023-11-27 23:47:35 24 4
gpt4 key购买 nike

我正在尝试以下面的方式初始化结构,然后通过引用传递它,然后尝试检索值。但是,我得到了一个随机数,这似乎表明我在该地址中没有任何内容。为什么会这样?

#include <iostream>

using namespace std;

struct newStruct {

int numberOne;
int numberTwo;
int numberThree;

};

newStruct initializer{
1,2,3

};

void printStruct(struct newStruct* inputNew) {
printf("This is the output %d\n", inputNew->numberOne );
printf("This is the second output %d\n", inputNew->numberTwo);
printf("This is the third output %d\n", inputNew->numberThree);
}

int main() {

struct newStruct initializer;


printStruct(&initializer);
getchar();
}

最佳答案

int main() {
struct newStruct initializer;

在这里你定义了一个局部的、未初始化的 newStruct 类型的变量,叫做 initializer;它与您在上面定义的名为 initializer 的全局变量无关,并且具有相同的名称,本地实际上隐藏了全局(当您执行不合格的名称查找时)。

要访问全局变量,只需避免定义同名的局部变量即可。

int main() {
printStruct(&initializer);

您还可以通过使用范围解析运算符(如 ::initializer)显式限定它来引用隐藏的全局变量,但我认为这不是您想要的。


顺便说一下,这是 C++ 而不是 C,当您引用类型名称时,您不必在 newStruct 前加上 struct 关键字。

关于c++ - 在 C++ 中初始化结构,然后通过引用传递检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com