可能是C中的指针问题

Rob*_*Rob 1 c c++

我不确定为什么下面的代码片段没有做它应该做的事情.在第二个循环中返回数字0到9将是主意.*scp是指向分配给程序的内存区域的指针.

 unsigned char* scp = (unsigned char*)(0x8e000000);
 scp_size = 10;
 for(i = 0; i < scp_size; i++, scp++) {
  *scp = i;
  } 
 }

   scp = (unsigned char*)(0x8e000000);
   for(i = 0; i < scp_size; i++, scp++) {
        printf("Data read[%d]: %d\n", i, *scp); 
 }  
Run Code Online (Sandbox Code Playgroud)

然而,实际输出完全不同:

 [exec] Data read[0]: 3
 [exec] 
 [exec] Data read[1]: 3
 [exec] 
 [exec] Data read[2]: 3
 [exec] 
 [exec] Data read[3]: 3
 [exec] 
 [exec] Data read[4]: 128
 [exec] 
 [exec] Data read[5]: 35
 [exec] 
 [exec] Data read[6]: 32
 [exec] 
 [exec] Data read[7]: 1
 [exec] 
 [exec] Data read[8]: 18
 [exec] 
 [exec] Data read[9]: 146
Run Code Online (Sandbox Code Playgroud)

任何人都有一个想法,如果我在这里与指针或任何其他想法可能出错的东西混在一起?非常感谢

asr*_*asr 6

您发布的代码是正确的.问题不在这里.

您正在写入的特殊内存区域存在问题.要么它是只读的,要么不能直接写,或者用这种方式写.如果您告诉我们运行此代码的平台,也许有人可以帮助您.

正如@Jari指出的那样,如果你使用数组访问它会更干净.