将Local的值复制到指针中

时间:2017-04-01 20:42:54

标签: c pointers

试图找到正确的方法,但似乎无法在任何地方找到正确的语法..

我想要做的就是将局部变量的值复制到指针中,所以我可以在任何地方使用该指针。否则,当方法返回时,该指针的值将是不可预测的。继承人我拥有但似乎仍然只是引用局部变量的地址

void method(){

 unsigned int localValue = 0x00FF00AA;
 unsigned int *point = (unsigned int *) 0x00000000;
 *point = localValue;
}

但是这段代码只是出错了。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

编程接收信号SIGSEGV,分段故障。

  

在C代码中,分段错误通常是由于错误而发生的   指针使用。取消引用空指针总是会导致分段错误,但是野指针和悬空指针指向可能存在或不存在的内存,可能是也可能不是可读写的,因此可能导致短暂的错误。

line 8        *point = localValue;

这里将您的本地值分配给导致SIGSEGV的指针。

试试这个。

#include <stdio.h>

void method(){
    unsigned int localValue = 0x00FF00AA;
    unsigned int *point = &localValue;
    printf("%p\n", *point); //this just debug code
}

int main(void) {
    method();

    return 0;
}

答案 1 :(得分:0)

它会出现故障,因为你试图通过NULL指针写入。

您可以使用&amp; -operator直接为指针指定要使用的整数的地址。

unsigned int localValue = 0x00FF00AA;
unsigned int *point = &localValue;

编辑:在下面真正有用的评论之后,我注意到我的第一句话可能是错的,即使它只是一个小细节,也会让它听起来如此。你要做的是写入NULL指针,但取消引用它,以便写入它指向的(不存在的)对象。

答案 2 :(得分:0)

point = (unsigned int*) localValue;

变量&#34; point&#34; (作为指针)设置为变量&#34; localValue&#34;。的值 为此,建议使用类型转换,以告诉编译器此无符号整数值现在是无符号整数的地址。接受评论的输入:演员是必需的。

如果您稍后使用指针,请小心 确保整数值是您真正想要使用的内存部分的地址;特别是在写作时 例如,它可能是微控制器上可写入的存储器映射外设寄存器。