“指向”存储在内存中的另一个值的数据类型。指针变量包含某个其他实体(变量或函数或其他实体)的内存地址。此标记应用于涉及指针使用的问题,而不是引用。使用指针的最常见编程语言是C,C ++,Go和汇编语言。使用特定语言标记。其他有用的标签是描述指针使用的方法,函数,结构等。
strong text当我创建对 DOM 对象的引用然后将其删除时,引用仍然存在。 var 测试 = $("#test") console.log(测试.长度); //1 $('#test').remove(); 控制台.log(...
我正在用 C 构建一个命令行解析器,我在其中获取命令行输入并将其组织成一个结构体。该结构有一个命令成员,其中包含一个具有第一个命令的结构,其
如果我不放置 printf(" "); 我有以下代码段被侵犯,否则工作正常 无效分散(浮点***plancha_ptr,浮点***copiaPlancha_ptr){ 浮动 **plancha = *
我遇到了变量在内存中相互覆盖的问题,所以我决定尝试动态分配我的数组之一。 在下面的简化代码中,我尝试创建一个
函数定位 s 所指向的字符串中最后一次出现的 ch。它返回一个指向该字符的指针,如果字符串中不存在 ch,则返回一个空指针。我正在尝试编写函数
我知道这有点基础,但我坚持这个。 我一直在尝试制作一款数独游戏。参数将通过将它们传递给主函数来给出。当尝试将它们写入不同的数组时,...
我是C编程语言的新手,我不知道我的代码是否足够正确和高效,或者有什么我误解的地方。我唯一想做的就是分配动态 m...
使用指针和大小在C++中高效恢复数据数组,并将结果保存到csv
我必须将单通道图像数据保存到磁盘,最好是作为 .CSV 文件。 每个像素都有一个浮点值。 可以使用事件提供的以下 3 个参数来访问数据: 指向
在管道系统调用的手册页中,我看到 /* 在所有其他架构上 */ int 管道(int pipelinefd[2]); #define _GNU_SOURCE /* 参见 feature_test_macros(7) */ ...
有没有一种方法可以将带有两个参数的函数指针设置为具有更少或不同参数的函数。 假设我有 双 func1(双 x); 我想要一个函数指针 双 (*f)(双...
我正在做一个学校项目,我们使用信号处理程序来修改程序计数器,以便跳过除以 0 的操作。使用 gdb 后,我非常确定程序计数器是
所以我很困惑如何不首先评估后增量。 (根据优先级,后递增首先出现。)有人可以解释一下吗? 考虑下面给出的代码: INT...
今天我在嵌入式设备的固件中看到一段代码,其中引用了一个将产生指针的表达式。大致如下: 结构测试{ 整数x[3]; }; 在...
我正在学习使用 std::unique_ptr 指针的方法。 我的代码: #包括 #包括 类对象{ 民众: 无效说(){ std::cout<<"hi"; } }...
C++ 中使用指针到指针 (**) 进行动态二维数组声明的说明
您好 Stack Overflow 社区, 我目前正在开发一个涉及动态二维数组的 C++ 项目,并且在声明此类时我很难理解指向指针 (**) 的指针的使用...
我正在尝试动态创建一个 2D 数组(5 行和 2 列)。分配内存时没有任何问题。然而,在将实际值分配给数组时,我得到了一个段...
我是一个 C 新手程序员。我在读取结构体数组中的 csv 文件内容时遇到了一些困难,并且在指针方面遇到了一些问题。 mwecsv.csv文件的内容是 ID、日期周 Schd5,星期一 Schd3,
为什么我无法将指向派生类的指针转换为引用指向基类的指针? 结构基{}; 结构派生:基{}; int main() { 派生* 派生 = nullptr; 静态转换 为什么我无法将指向派生类的指针转换为引用指向基类的指针? struct Base { }; struct Derived : Base { }; int main() { Derived* derived = nullptr; static_cast<Base*&>(derived); } 我得到: invalid static_cast from type 'Derived*' to type 'Base*&' 根据您的评论: “不,这不是一个学术问题。我需要调用一个以参数为参数的函数Base*&” 解决此问题的正确方法是创建一个适当类型的新指针变量,并将其(或者更确切地说,对其的引用)传递给相关函数: struct Base { }; struct Derived : Base { }; int main() { Derived* derived = nullptr; Base* base = static_cast<Base*>(derived); my_function(base); // takes a Base*& argument // If you need the pointer value and are sure that // it's a Derived* type: derived = static_cast<Derived*>(base); } 请注意,如果您在问题本身中包含相关信息(来自我上面引用的评论),您可能会更快收到此答案。 因为 Derived* 对象不是 Base* 对象,并且两者完全有可能具有不同的内存布局或值表示(例如,如果 Base 和 Derived 的对齐要求不同)。由于一个不是另一个,static_cast无法执行转换。 如果您知道自己在做什么并且知道类型双关语没问题,请使用类型双关语工具 — reinterpret_cast: reinterpret_cast<Base*&>(derived); 并注意误用的任何后果(与往常一样reinterpret_cast)。特别注意,根据 C++11 3.10/10,就标准而言,通过转换结果进行的任何访问都将是未定义行为(尽管您的编译器可能会提供更强的保证)。 请注意,在一般情况下,从 Derived* 到 Base* 的转换不必是无操作。例如,如果涉及多重继承,则可能涉及地址移位。 扩展https://stackoverflow.com/users/1782465/angew-is-no-longer-proud-of-so提供的答案,您可以尝试此代码来了解为什么引用 Base* (即Base*&) 无法绑定到 Derived*: struct B { int valb; }; struct D : B { int vald; }; template<typename T> struct SC { T vald_sc; }; template<typename T> struct MV { int valmv; T& valb; MV(T& vb) : valb(vb) {} }; void f1(B* dp) { } void f2(B*& dp) { } void f3(B** dp) { } int main() { SC<D> sc; MV<B> mv(sc.vald_sc); //Conversion succeeds because a D object is a B object: their memory layout starts at the same addr SC<D*> scp; //MV<B*> mvp(scp.vald_sc); //Error: candidate constructor not viable: no known conversion from 'D *' to 'B *&' for 1st argument //NB: A D* object is not a B* object. MV<B*> mvp1(reinterpret_cast<B*&>(scp.vald_sc)); MV<B*> mvp2(*reinterpret_cast<B**>(scp.vald_sc)); f1(scp.vald_sc); f2(reinterpret_cast<B*&>(scp.vald_sc)); f2(*reinterpret_cast<B**>(scp.vald_sc)); f3(reinterpret_cast<B**>(&scp.vald_sc)); return 0; } 仅针对您的错误 改变这个 static_cast<Base*&>(derived); to static_cast<Base*>(derived); ^^ 请参阅此处 http://ideone.com/1QuMLK 如果您想要参考,您需要做 Base* ptr = static_cast<Base*>(derived); Base &ref = *ptr; 你不能将指针转换为引用 - 它们是完全不同的东西
根据我的教科书, char *p = "你好"; 指向字符串的指针,其中字符串和指针都可以修改 const char *p = "你好"; 指向常量 str 的指针...
考虑以下代码: 让 x = String::from("123"); 让 bx = Box::new(x); 让 dbx = *bx; println!("{}", dbx); //println!("{}", bx); // 错误...