- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在传递一个链表,其中包含另一个链表到一个函数,但我在从传递的双指针中取消/引用内部链表时遇到问题。 push(*config->inner_linked_list...
行的编译器错误是 '*config' 是一个指针;您是否打算使用 '->'
。在 main &config->inner_linked_list
内部工作正常。我似乎无法弄清楚我需要在这里使用哪种类型的 ref/deref。
typedef struct new_inner {
wchar_t setting[10];
wchar_t val[10];
struct new_inner * next;
}INTLL_t ;
typedef struct new_head {
wchar_t name[10];
struct INTLL_t * inner_linked_list;
struct new_head * next;
} HEAD_t;
// In Main
int main(){
...
HEAD_t * config;
config = malloc(sizeof(HEAD_t));
config = NULL;
//config populated elsewhere
functo1(&config);
...
}
BOOL functo1(HEAD_t ** config){
HEAD_t * current = *config;
while(current != NULL){
INTLL_t * s = another_ll; // Also INTLL_t
while(s != NULL){
push(*config->inner_linked_list, another_ll->setting,another_ll->val);
s = s->next;
}
current = current->next;
}
return TRUE;
}
最佳答案
struct INTLL_t * inner_linked_list;
struct INTLL_t
是未定义的类型。它与 INTLL_t (这是一个 typedef,而不是一个结构体)无关。您可能指的是 INTLL_t *
或 struct new_inner *
。
HEAD_t * config;
config = malloc(sizeof(NODE_t));
config = NULL;
这是内存泄漏。您刚刚丢失了指向 malloc
返回的 block 的唯一指针。此外,NODE_t
未定义。无论如何,它应该是 config = malloc(sizeof (HEAD_t))
或(最好)config = malloc(sizeof *config)
。
BOOL functo1(HEAD_t ** config){
BOOL
未定义。
NODE_t * s = another_ll;
NODE_t
和 another_ll
均未定义。
push(*config->inner_linked_list, another_ll->setting,another_ll->val);
push
未定义。
config
是一个指向结构体的指针。 *a->b
解析为 *(a->b)
,这要求 a
是一个指向结构体的指针,该结构体的 b
成员也是一个指针(它相当于 *((*a).b)
)。您需要使用 (*config)->inner_linked_list
(或等效的 (**config).inner_linked_list
)。
return TRUE;
TRUE
未定义。
关于c - Ref/DeRef 双点链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50867168/
我正在阅读 Rust 的 Deref 文档特点: pub trait Deref { type Target: ?Sized; fn deref(&self) -> &Self::Ta
下面是Deref example from The Rust Programming Language除了我添加了另一个断言。 为什么 assert_eq 和 deref 也等于 'a'?为什么在手动
我想实现 Deref和 DefrefMut在拥有盒装特征的结构上,例如: use std::ops::{Deref, DerefMut}; trait Quack { fn quack(&se
这个问题在这里已经有了答案: Why is the return type of Deref::deref itself a reference? (2 个回答) 1年前关闭。 例如,我有一个实现了
来自 clojure 为勇敢而真实的人: (defmacro enqueue [q concurrent-promise-name & work] (let [concurrent (butl
我正在传递一个链表,其中包含另一个链表到一个函数,但我在从传递的双指针中取消/引用内部链表时遇到问题。 push(*config->inner_linked_list... 行的编译器错误是 '*co
我正在尝试为枚举实现Deref: use std::rc::Rc; use std::ops::Deref; pub trait tObject { fn name(&self) -> Str
我需要为来自外部 crate 的对象实现 fmt::Display 方法,因此我为该对象创建了一个包装器。我希望能够使用原始对象的所有方法,而不必重新定义所有方法。我尝试按照很棒的 IRC chann
这个问题在这里已经有了答案: Why is the return type of Deref::deref itself a reference? (2 个答案) 关闭 5 年前。 以下代码: us
我有: struct Id; struct Url; struct IdAndUrl { id: Id, url: Url, } 我希望能够使用 IdAndUrl在我需要的地方 Id
我经常使用 newtype 模式,但我厌倦了编写 my_type.0.call_to_whatever(...)。我很想实现 Deref 特性,因为它允许编写更简单的代码,因为在某些情况下我可以使用我
我在 Rust 中编写一个 Vector 类只是为了好玩,我认为能够为它实现 Deref 会很好,就像访问元组引用一样访问它。例如,Vec2可以取消引用为 &(f32, f32) .我想到了这个: p
如果能够使用 Deref 从通用容器生成 &TraitType,而不是调用 instance.as_ref() 会更方便。即: (*my_container).do_thing(); 对比 my_co
在这段代码之前,我以为我了解了移动语义。 fn main() { let v = Data { body: vec![10, 40, 30], }; p(&v)
我有一个实现Deref的结构: pub struct Foo { val: u8, } impl Deref for Foo { type Target = u8; fn de
class DogOwner { Dog dog; DogOwner(Dog dog) { this.dog = dog; } } class Dog {
我在尝试将 impl Add for String 添加到标准库时遇到了这个问题。但是我们可以轻松复制它,无需运算符(operator)恶作剧。我们从这个开始: trait MyAdd { f
在阅读了关于 Smart Pointers and Interior mutability 的 Rust 书中的部分之后,作为个人练习,我尝试编写一个函数,该函数将遍历智能指针的链表并返回列表中的“最
这里是 example of usage Deref 的修改版本: use std::ops::Deref; use std::rc::Rc; #[derive(Clone, PartialEq, H
我有一个 String newtype ErrorMessage 我在原型(prototype)箱中用于错误。 (我知道这是一种不好的做法。我将在发布之前构建一组适当的不同错误类型。) 我需要 Err
我是一名优秀的程序员,十分优秀!