3
任何人都可以请帮我理解以下几点。我正在重新分配一个指针,并使用一个临时值来获取它指向的内容。我没有理由认为案例1应该起作用,案例2不应该起作用。重新分配一个指针?
//案例1:本作品:
void main (void){
unsigned int nr1;
unsigned int nr2;
unsigned int * ptr_int;
unsigned int temp1_value;
unsigned int temp2_value;
while(1){
nr1 = 0x1234;
ptr_int= &nr1;
temp1_value = *(ptr_int); // Copy nr1 to temp1_value
nr2 = 0x5678;
ptr_int= &nr2;
temp2_value = *(ptr_int); // Copy nr2 to temp2_value
}
}
//案例2:这不起作用(如果我走一步看一步,temp1_value不改变)
void main (void){
unsigned int nr1;
unsigned int nr2;
unsigned int * ptr_int;
unsigned int temp1_value;
unsigned int temp2_value;
while(1){
nr1 = 0x1234;
ptr_int= &nr1;
temp1_value = *(ptr_int); //Copy nr1 to temp1_value
nr2 = 0x5678;
ptr_int= &nr2;
temp1_value = *(ptr_int); //Copy nr2 to temp1_value
}
}
我我确信这是一个基本的东西,但我不能指责它。
我不允许重新指定指针吗?
谢谢。
编辑:它嵌入C.目标是一个8051微控制器。
temp1_value始终与nr2相同。 (0x5678) – CalinTamaian 2014-11-25 14:53:05
您是否意味着要将最后一个赋值赋给temp2_value而不是temp1_value,就像现在这样? – Kaganar 2014-11-25 14:53:06
也许你的编译器已经对最初的几行进行了优化,因为它们还没有用于任何东西。尝试在每次分配后将一些printf打印出temp1_value的值,这将迫使它不进行优化。 – 2014-11-25 14:53:57