我不知道为什么下面的代码片段没有按预期做
做。在第二个循环中返回数字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);
}
但是,acual输出完全不同:
[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
如果有人在这里将指针与其他内容混为一谈,或者有人想到了什么地方可能出了什么问题?非常感谢
最佳答案
您发布的代码是正确的。问题不在这里。
您要写入的特殊内存区域存在问题。它是只读的,或者不能直接写,或者是以这种方式。如果您告诉我们正在运行此代码的平台,也许有人可以为您提供进一步的帮助。
正如@Jari指出的那样,如果您使用数组访问,它将更加干净。