c - 通过强制转换取消引用 void 指针

标签 c pointers void-pointers

我在试验 void 指针时遇到了以下问题。当我编译下面的代码时一切正常但是当我在我的机器上运行它时它不会给我结果而是提示 The program has stopped working appeared( https://drive.google.com/file/d/0B1mLcnk8kTFUeEtmYnlOaWJ6T3c/view?usp=sharing ) ,我无法弄清楚背后发生了什么场景,是否存在关于取消引用 void 指针的任何问题。

此外,如果我使用注释代码而不是原始代码,它会起作用。

 #include<stdio.h>
 int main()
 {
     void* ptr;
     int dupe = 5;
     *(int* )ptr = dupe;  // ptr = &dupe;
      printf("The value at ptr is %3d",*(int* )ptr);
 }

我在 CodeBlocks 上使用 gcc。

最佳答案

6.       *(int* )ptr = dupe;  // ptr = &dupe;

指针 ptr 未指向有效的内存位置。你在评论里写的,就是你应该做的。

语句ptr = &dupe 将使ptr 指向变量dupe 的内存位置。

关于c - 通过强制转换取消引用 void 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31445788/

相关文章:

c - 我怎么能再次 "turn on"标准输出?

c - 为什么这段代码会出现指针错误?

c++ - 使 std::to_string 使用 void 指针,如 operator<<?

c - 复用比较功能

c++ - 带有/不带有编译器的 C/C++ IDE

c - 我的奇偶排序例程有什么问题?

C结构数组段错误

C:从 void* 读取 int**

c - C中的标准形式

c++ - (悬空?)从函数返回的引用不是 "work"