struct 相关问题

各种编程语言中的关键字,其语法类似于或派生自C(C ++,C#,Swift,Go,Rust等)。使用特定的编程语言标记来标记涉及使用`struct`作为语法的问题,语义可以依赖于语言。关键字定义或声明由其他数据类型组成的数据类型。结构的每个成员都有自己的内存区域(而不是“union”,其成员共享一个内存区域)。


C 与 C++ 结构对齐

我在最近的一次采访中被问到有关 C++ 结构体字段对齐的问题,并推测 C 和 C++ 在结构体打包中遵循相同的策略。 然而,这是错误的假设。内部...

回答 4 投票 0

我可以制作布尔位字段吗?

这合法吗?我读到只能使用整数作为位域,但这是否适用于 bool/_Bool 类型?这可以吗,或者这是未定义的行为? 结构体 MyStruct { // ... 乙...

回答 1 投票 0

C 程序遍历单链表

我编写了一个C程序来实现遍历单链表的概念。该程序首先通过请求用户输入来创建列表,然后显示/遍历创建的

回答 1 投票 0

将 C 或 C99 中的结构数组初始化为所有相同的值[重复]

让我们在 C 或 C99 中假设以下内容: 类型定义结构 { 整数x; 双 y; } MY_S; MY_S a[666] = {333, 666.6}; 这是否只初始化数组的第一个对象?如果是的话有什么办法吗...

回答 4 投票 0

使用 #pragma pack 时仍然会发生结构体的 C++ 填充

我正在尝试使用 C++ 结构实现 24 位整数数据类型。我希望它的大小为 24 位/3 字节——而不是填充到 4 字节 int 中。我正在使用 Visual Studio Community 2019 的编译器。 ...

回答 1 投票 0

Python-Polars:group_by 列将剩余列组合成结构体字段?

我还没有找到一种方法来对列进行 group_by() 并为新列提供一个结构字段。这是数据帧的片段: 人口普查_小册子 GEOID_人口普查 表_B24012 价值 人口普查区 9… 04001942600

回答 1 投票 0

-> 和 之间的区别。在结构中?

如果我有一个类似的结构 结构帐户 { int 账户号码; }; 那么这样做有什么区别 myAccount.account_number; 和 我的账户->账户号码; 或者没有什么不同...

回答 8 投票 0

vscode中两个h文件需要互相调用的问题如何解决

两个.h文件互相调用,导致编译失败 在stack_tree.h中,我需要使用TreeNode*,但它是在tree.h中定义的,所以我尝试包含“tree.h”,就像下面的c...

回答 2 投票 0

如何获取结构的长度? (NASM)

如果我定义这样的结构: .bss 节 结构米斯特鲁克 .x:resb 1 .y:resb 1 恩斯特鲁克 我如何获得结构的长度?

回答 1 投票 0

引用结构的枚举变体

我是生锈新手。我有这个代码: 枚举 Foo { F1 { x: Vec, y: i32 }, F2 { x: &Bar }, } 结构栏{ x:i32, y:Vec, } 显然,这不会编译,因为...

回答 1 投票 0

在联合体中使用 std::string 和 int

在同一联合内使用 std::string (或其他非平凡类型)与 int (或其他平凡和非平凡类型)是否正确? 我已经这样实现了: #包括 在同一联合内使用 std::string(或其他非平凡类型)与 int(或其他平凡和非平凡类型)是否正确? 我已经这样实现了: #include <iostream> #include <string> struct Foo { enum Type {data_string, data_int}; int m_type; Foo(Type t) : m_type(t) { if (t == Type::data_string) { new (&s) std::string(); } } ~Foo() { if (m_type == Type::data_string) { s.~basic_string(); } } union { int n; std::string s; }; }; int main() { Foo f1(Foo::Type::data_string); f1.s = "hello "; std::cout << f1.s; Foo f2(Foo::Type::data_int); f2.n = 100; std::cout << f2.n; } 而且效果非常好。但我不确定这段代码。从 C++ 标准角度来看,它是正确的代码吗? 您不应该将 union 与非平凡类型一起使用。 联合并不意味着处理其中 C++ 对象的正确构造和析构。 您在代码中手动处理了它,这在技术上是正确的,但很容易出错。如果你在联盟中建造或破坏了错误的类型,你很容易进入UB土地。 一般来说,在 C++ 中,建议使用 std::variant 作为通用求和类型。 因此,我建议使用以下内容代替您的工会: std::variant<int, std::string> m_value; 这样你的 Foo 构造函数和析构函数就可以被 default 编辑。该变体将负责 std::string(或其中任何其他重要类型)的正确构造和销毁。

回答 1 投票 0

emplace_back 正在将结构推入我的数组(C++)

我正在练习推和弹出。为此,我使用 emplace_back 函数将结构推入我的数组中。 这是我的代码: #包括 #包括 #包括 我正在练习推和弹出。为此,我使用 emplace_back 函数将结构推入我的数组中。 这是我的代码: #include <string> #include <vector> #include <iostream> #include <string_view> struct Person { std::string name{}; int age{}; }; int main() { std::vector<Person> nums{{"Daniel", 34}, {"Jose", 39}, {"Martin", 22} }; nums.emplace_back("Malena", 30); for (auto const& a : nums) std::cout << a.name << " " << a.age << '\n'; return 0; } 错误: In file included from /Users/xxx/CLionProjects/test/main.cpp:1: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string:504: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/string_view:175: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/__string:57: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/algorithm:643: /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/memory:1881:31: error: no matching constructor for initialization of 'Person' ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/memory:1773:18: note: in instantiation of function template specialization 'std::__1::allocator<Person>::construct<Person, char const (&)[7], int>' requested here {__a.construct(__p, _VSTD::forward<_Args>(__args)...);} 如有任何帮助,我们将不胜感激。 这需要 C++20。 C++17 或更早版本中的一些选项是: 为 Person 定义一个构造函数 显式传递对象:nums.emplace_back(Person{"Malena", 30}); 使用push_back代替带花括号的初始值设定项列表:nums.push_back({"Malena", 30}); 编译在 C++ 20 中编译得很好。 请参阅演示1。 如果必须使用旧版本的 C++,则应将以下构造函数添加到 Person: Person(std::string const & n, int a) : name(n), age(a) {} 参见演示2。

回答 2 投票 0

使结构在库和应用程序中可见 - C

我想知道如何使结构在库内部和外部标头中都可见。让我尝试用下面的代码来解释 我有一个结构: 类型定义结构{ 整数a; 整数b; }

回答 4 投票 0

强制C++结构紧密包装

我正在尝试读取二进制文件。问题在于文件的创建者没有花时间将数据结构与其自然边界正确对齐,并且所有内容都包装得很紧。这...

回答 3 投票 0

对结构列表进行排序

我有一个 C++ 代码,其中有一个结构体和结构体列表。在我的结构中,第一个元素是一个字符串。在结构列表中,如何对结构的第一个元素进行排序,以便之后...

回答 3 投票 0

如何在另一个结构中创建灵活的结构?

我正在尝试创建一个物品和盒子系统,其中一个盒子可以在其中容纳灵活数量的物品(即,不要通过使每个盒子有 50 个物品而浪费内存,而有些盒子只有几个物品)。 ...

回答 1 投票 0

C++ 调用结构体函数的指针

我在下面有一个简单的代码: int 全局 1(int x) { 返回 x * 5; } int 全局2(int x) { 返回 x + 5; } 结构一些_结构{ 整数a; int foo1(int x) { 返回 x * a; } int foo2(我...

回答 1 投票 0

在汇编中,你如何处理C结构体?

例如,如何为这个系统调用sys_wait4准备参数: asmlinkage long sys_wait4(pid_t pid,unsigned int __user *stat_addr, int options, struct rusage __user *ru) 1120 { 如何应对

回答 2 投票 0

尝试分配 2D 结构表时写入无效

我的内存分配不正确,因此我遇到了段错误。我想创建一个由二维案例(结构)表表示的棋盘游戏。 对于上下文,我正在编写俄罗斯方块游戏。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.