dereference相关内容
我有一个遗留代码,其中为指针定义了接口。 我正在尝试适应某些功能以采用迭代器,例如 允许使用InputIterator取消引用的元素的地址,例如 istream_iterator ? 结果是临时的,在通话期间必须存储在内存中,但我不确定。 下面的示例使用 double ,但是类型可能更复杂(大)。 #include #include
..
在 C ++ 03 中,如何确定类型 T 是否可取消引用? 意思是,我如何静态确定 * t 是否是类型 t 的有效表达式> T ? 我的尝试: template struct enable_if {}; template struct enable_if {typedef T type; };
..
我正在学习Rust,并且没有线程经验。我正在上Rustlings课程,并且已经解决了 threads1.rs 练习,但是我不明白为什么我的 Mutex 使用std :: sync: :{Arc,Mutex}; 使用std :: thread; 使用std :: time :: Duration; 结构JobStatus { jobs_completed:u32, } fn
..
我阅读了 Rust的确切自动引用规则是什么? 从头到尾,但我仍然对从数组到切片的强制转换有疑问。 让我们考虑以下代码: let arr:& [i32; 5] =&& [1、2、3、4、5]; // //让arr:& [i32] =&& [1、2、3、4、5]; //错误;预期切片,找到参考 我希望&& [1、2、3、4、5] 具有类型&& [i32; 5] 并取消
..
尽管通读了文档,但对& 和 * 符号的含义感到困惑 在此示例中,它似乎类似于C ++引用(即,一个地址 fn main(){ let c:i32 = 5; 让rc =& c; 让next = rc + 1; println!(“ {}”,下一个); // 6 } 但是,以下代码完全相同: fn main(){ let c:i32 = 5;
..
经过讨论,我现在有些困惑自动反引用和 deref强制之间的关系。 看来,术语“自动取消引用”仅在以下情况下适用取消引用的目标是方法接收者 ,而看来,“ deref强制”一词适用于函数参数及其需要的所有上下文。 我认为取消引用并不总是涉及到deref强制,但是我不确定:取消引用是否总是使用某些 Deref :: deref 特征实现? 如果是,是 T的实现者:Deref
..
我经常使用newtype模式,但是我厌倦了编写 my_type.0.call_to_whatever(...)。我很想实现 Deref 特质,因为它允许编写更简单的代码,因为在某些情况下,例如 eg em>: 使用std :: ops :: Deref; 类型基础= [i32; 256]; struct MyArray(Underlying); 表示MyArray的Deref
..
我正在使用Rust进行学习/实验,并且在用这种语言找到的所有优雅之处中,都有一种使我感到困惑的特质,似乎完全不合时宜。 在进行方法调用时,Rust自动取消引用指针。我进行了一些测试以确定确切的行为: 结构X {val:i32} $ b X的$ b impl std :: ops :: Deref { type Target = i32; fn deref(& self)-> &
..
我正在尝试可变地借用可变变量。 Foo 实现了 Deref 和 DerefMut ,但是编译失败: 使用std :: ops :: {Deref,DerefMut}; 结构Foo; 表示Foo的Deref { 类型Target = FnMut()+‘static; fn deref(& self)-> & Self :: Target { 未实现!() } } im
..
HASH(0x991f0dc) 因此,如果我们将上面的哈希引用存储为标量变量中的字符串, 在Perl程序中用“%"取消引用它会引发错误, Can't use string ("HASH(0x991f0dc) ") as a HASH ref while "strict refs" in use at tcpclient1.pl line 49, line 1 以上是
..
在c ++中是否可以很好地定义将一个过去的指针取消引用到数组类型? 考虑以下代码: #include #include int main() { // An array of ints int my_array[] = { 1, 2, 3 }; // Pointer to the array using ar
..
我正在使用PHP 7.2.我从PHP手册 arrays章节中碰到了以下注释 数组无声地解引用了不是字符串的标量值 产生 NULL ,即不发出错误消息. 我了解如何取消引用数组文字,但是我无法理解“数组取消引用"如何处理布尔值/整数/浮点数/字符串类型的标量值? 如果您查看PHP手册本身的代码示例,则会发现矛盾之处,因为它不是整数类型的值,并非根据手册默默地产生NULL.
..
当我的应用程序因VS的错误消息而崩溃时,我遇到了一个问题:“调试断言失败!(...)表达式:矢量迭代器不可解除". 问题是,它是在使用vector的push_back期间发生的. 这是代码.我决定将这是我的BigInt库,作为练习来实现.该错误隐藏在我(用于测试BigInt的)创建的TestBigInt类中.公认的代码很长,但是我将bug缩小到了其中的一小部分. 这是我给错误代码的输入
..
我正在阅读C ++ Primer 5th,遇到的代码看起来像这样: string s("some string"); if (s.begin() != s.end()) { auto it = s.begin(); *it = toupper(*it); } it从迭代器接收到字符串s中第一个字符的值;然后用toupper()
..
有人可以为我解释多重引用和取消引用背后的概念吗?为什么以下程序将输出显示为"h"? int main() { char *ptr = "hello"; printf("%c\n", *&*&*ptr); getchar(); return 0; } 不是this,而是产生'd'? int main() { char *ptr = "hello"; printf("%c\n",
..
我已经编写了一些可以正常运行且看起来没有错误的应用程序(即,它们不会崩溃...),但是我收到以下代码的警告(我使用了几次)- 在@interface中- GameViewController *controller; 在@implementation中- -(id)initWithOwner:(GameViewController *)aController withName
..
我似乎对一个简单的程序有问题,该程序应该计算文件中的各种字符类型.即使文件根本不为空,它也始终打印零.我认为这与指针有关,可能是错误的.我还想知道在这种情况下是否需要初始化变量? // fun.h void count_char(FILE *f, unsigned *newl, unsigned *let, unsigned *num, unsigned *spec_char); //
..
这应该超级简单,但是我不确定为什么编译器会在这里抱怨. #include #include int main(int argc, char *argv[]) { int *n = 5; printf ("n: %d", *n); exit(0); } 收到以下投诉: foo.c:在"main"函数中: foo.c:6:
..
我正在弄乱一个指向指针向量的指针 std::vector* MyVector; 我尝试使用以下两种方法进行访问: MyVector->at(i); //This works MyVector[i] //This says "Expression must be a pointer to a complete object type" 据我了解,
..
由于我是C语言的新手,所以我还没有获得有关指针的某些知识.我想检查命令行参数是否为整数,但是否在一个单独的函数中,以便我传递argv数组的指针. int main(int argc, char* argv[]){ if(check(argv)){ // Do stuff to argv[1] } } int check(char* p){ // Te
..