pointers 相关问题

“指向”存储在内存中的另一个值的数据类型。指针变量包含某个其他实体(变量或函数或其他实体)的内存地址。此标记应用于涉及指针使用的问题,而不是引用。使用指针的最常见编程语言是C,C ++,Go和汇编语言。使用特定语言标记。其他有用的标签是描述指针使用的方法,函数,结构等。

在C中,如何在堆中存储和释放具有行和列的多维映射?

我正在尝试使用C语言构建一个数据结构,它允许我记录字符串(表示海拔值),其数据描述地图中点的一些特征。 每一点...

回答 1 投票 0

数组中指针的减法应该是索引减法还是地址减法?

在此输入图像描述 答案不应该是第二个问题吗? ptr1保存arr[0]的地址,ptr2保存arr[3]的地址。所以 (ptr2-ptr1) 应该是 ((34(浮点大小)) -(04)) 即

回答 1 投票 0

将字符串传递给 file.open();

我习惯了更高级的语言(java、python等),这是非常明显的。我试图将用户输入的字符串传递给 cin,即要打开的文件的名称。似乎有某种

回答 1 投票 0

为什么我的指针赋值会导致看似不相关的值发生变化?

我正在尝试使用双指针解决间隔问题。基本前提是在我的映射中存储指向 Interval 结构的双指针,这样我就可以更新间隔而无需迭代......

回答 2 投票 0

在分配/打印时为什么我不必取消引用 c 中的数组指针?

#包括 无效主(){ int *i = (int *) malloc(12); *i[0] = 1; printf("%d", *i[0]); } i 应该是一个指针。那么为什么这段代码不起作用呢? 以及什...

回答 1 投票 0

无法从字符串获取指针

// [[GET /v2/PreMigrateCheck][501] v2PremigrationcheckNotImplemented &{Code:0x140015020e0 Message:0x14000cd6110}] //我想获取上面格式化字符串中包含的指针值

回答 1 投票 0

C 中指向短整型的指针

当我尝试使用短指针时,我会遇到未定义的行为或分段错误。 例如: #包括 int main() { 短整型*a; *a = 10; printf("%hd “……

回答 1 投票 0

当我们将零赋给指针时会发生什么?

Paul 和 Harvey Deitel 所著的 C How to Program, 8/e 一书中,在初始化和为指针赋值部分中写道,“当赋值 0 时,它首先转换为

回答 1 投票 0

可以从指针数组中的值初始化指针吗?

我基本上想要一个函数列表作为函数指针数组;然后我想管理这个数组中的索引变量和一个接受来自 t 的值的指针变量...

回答 1 投票 0

可以初始化指向类型变量数组的指针吗?

我一直在研究指向结构数组的 c 指针,并尝试将其应用到我的示例中。 我得到了这个代码片段,它编译得很好: #包括 枚举 test_e { eONE,

回答 1 投票 0

void* 与 char* 指针算术

我正在浏览我的教科书,我对其中的一些代码有点困惑。一方面,它们通过以下方式执行指针算术: 无效* bp; ... bp = (void*)((字符...

回答 2 投票 0

为什么在 C++ 中声明整数和指针时会获得不同类型的随机值?

据我了解,指针实际上是整数,可以将另一个变量的地址存储为其值。就像任何非静态变量一样,在声明但未初始化时,它们与 ra...

回答 1 投票 0

避免使用多个指针作为函数参数

我想创建一个有 4 个按钮的菜单。每个按钮都会进入另一个带有 4 个新按钮的菜单。同样,每个新按钮都会导致另一个带有新按钮的菜单,依此类推...... 我请...

回答 1 投票 0

我自己的智能指针实现正在创建移动操作问题

在下面的代码中,输出结果为空白,而不是构造函数和析构函数的打印输出。没有移动操作,代码运行良好。我不知何故搞乱了移动操作,

回答 1 投票 0

不兼容的常量指针

将非常量指针传递给需要常量指针的函数通常不会引发警告(这是有道理的,该函数承诺比调用者期望的“更好”),但非

回答 1 投票 0

为什么 char 指针的大小是 8,但会增加一个字节?

void main() { 字符变量 = 10; char *ptr = &var; printf("自增前的指针地址:%p “,ptr); printf("sizeof(ptr):%d “,sizeof(ptr)); ptr++;...

回答 4 投票 0

C++中的指针解释

我正在自学 C++,我在 C++ 的指针部分找到了自己。 据我了解,指针将变量的值分配给内存。 但我遇到了这个问题,

回答 2 投票 0

LeetCode C 中的二和问题。请帮我指点一下

我是 LeetCode 的新手,我唯一的 C 背景是其基础知识的一类。我希望能够进步并了解更多。请帮助我解决这个问题。我认为我的问题在于这一点......

回答 1 投票 0

使用指针编辑二维数组

嗨,当我尝试使用指针为数组赋值时,出现错误,指出 float[int] 不是有效类型 下面是我的代码,它需要一个文本文件,其中包含 1 0.005 2 0.025 3 0.01 #包括...

回答 1 投票 0

C++中指向成员函数的指针

我在这行 std::cout 中遇到问题 << &X::a << std::endl; this line print 1 supposed to printed address of &X::a this my code #include #包括 我在这一行遇到问题 std::cout << &X::a << std::endl;这一行 print 1 应该打印 &X::a 的地址 这是我的代码 #include <iostream> #include <string> #include <iomanip> class X { public: int a; void f(int b); }; void X::f(int b) { std::cout << "the value of b is " << b << std::endl; } void add() { std::cout << "Hello this function hello" << std::endl; } int main() { void (*funcPtr)(void) = add; funcPtr(); int X::*ptrnumber = &X::a; void (X::*ptrfunction)(int) = &X::f; X xobj; xobj.*ptrnumber = 10; std::cout << "the vslue of a is " << xobj.*ptrnumber << std::endl; (xobj.*ptrfunction)(20); std::cout << std::hex << &X::a << std::endl; //std::cout << funcPtr << std::endl; } 我用不同的编译器c++编译,但我有相同的输出 我显示了这个“M1Xi”的类型,我不知道这个数据类型 &X::f 和 &X::a 不是 指针。因为 f 和 a 都是 非静态 成员,所以它们是 成员指针,无论命名和语法相似性如何,它们的行为都与 指针 非常不同。 成员指针(无论是函数还是数据成员)并不代表地址。所以尝试打印它的地址是没有意义的。 因此,标准库中的 << 和 std::ostream 也没有重载,这也需要成员指针。 但是,存在以 bool 作为参数的重载,并且可以将成员指针隐式转换为 bool。如果成员指针具有空成员指针值,则结果为 false,否则结果为 true。使用默认设置 true 将打印为 1。 表达式 &X::a 不是可以在普通地址中使用的地址。它是成员的相对地址。它只能与指向成员的指针一起使用。 指向成员的指针可以转换为其他指向成员的指针,并且仅在有约束的情况下。它们不能转换为其他类型的指针或 int。在这种情况下很难打印它们的值。 唯一可能的转换是布尔值,它的目的是查看它是否为空。因为指向成员的指针可以为 nullptr: int X::*px = &X::a; bool bx = px; std::cout << bx <<std::endl; px = nullptr; bool bn = px; std::cout << bn <<std::endl; 如果要打印指向成员的指针的地址,则必须使用对象取消引用它: std::cout << std::hex << &(xobj.*(&X::a)) << std::endl; 正如您可能想象的那样,不可能使用取消引用 nullptr 来成员或使用 nullptr 作为对象地址的技巧,因为取消引用空指针是 UB。顺便说一句,这不是一个真正的问题,因为该标准对对象的布局几乎没有保证,因此这个相对地址本身没什么用处。

回答 2 投票 0

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