小编Faf*_*Dog的帖子

为什么转换指针会改变地址处的值?

所以我正在做一个练习,看看我是否正确使用了 memset。

这是我编写的原始代码,它应该将一些地址设置为值 50:

int main(){
    int *block1 = malloc(2048);
    memset(block1, 50, 10);
    // int count = 0;
    for (int *iter = block1; (uint8_t *) iter < (uint8_t *)block1 + 10; iter = (int *) ((uint8_t *)iter + 1) ){
        printf("%p : %d\n", iter, *iter);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望内存中的每个地址都存储值 50。但是我的输出是:

(地址:值)

0x14e008800 : 842150450
0x14e008801 : 842150450
0x14e008802 : 842150450
0x14e008803 : 842150450
0x14e008804 : 842150450
0x14e008805 : 842150450
0x14e008806 : 842150450
0x14e008807 : 3289650
0x14e008808 : 12850
0x14e008809 …
Run Code Online (Sandbox Code Playgroud)

c printf pointers casting memset

0
推荐指数
1
解决办法
235
查看次数

标签 统计

c ×1

casting ×1

memset ×1

pointers ×1

printf ×1