void *memory;
unsigned int b=65535; //1111 1111 1111 1111 in binary
int i=0;
memory= &b;
for(i=0;i<100;i++){
printf("%d, %d, d\n", (char*)memory+i, *((unsigned int *)((char *) memory + i)));
}
我想了解一件事。用指针存储的数据
(字符*)存储器+ I - 在范围2686636打印出ADRESS - 2686735.
,当我存储65535与存储= & B本应在ADRESS 2686636和2686637 存储此数因为每ADRESS是只是一个字节,以便8个二进制字符,从而当我打印出来
*((无符号整型*)((字符*)存储器+ i))的本应打印2686636,255和2686637,255
,而不是它,它打印2686636,65535和2686637,
我想实现内存分配的随机数。这是学校项目。这应该代表记忆。一个地址应该是一个字节,因此标题将为2686636-2586639(块的大小为4个字节)和2586640(1字节的char为空闲或使用的存储器标志)。有人能解释给我的感谢。
感谢您的回答。
void *memory;
void *abc;
abc=memory;
for(i=0;i<100;i++){
*(int*)abc=0;
abc++;
}
*(int*)memory=16777215;
for(i=0;i<100;i++){
printf("%p, %c, %d\n", (char*)memory+i, *((char *)memory +i), *((char *)memory +i));
}
输出
0028FF94, , -1
0028FF95, , -1
0028FF96, , -1
0028FF97, , 0
0028FF98, , 0
0028FF99, , 0
0028FF9A, , 0
0028FF9B, , 0
,我认为它的工作原理。 255只有一个-1,65355 2次-1和16777215 3次-1。
只删除unsigned int?现在输出是2686636,-1和2686637,-1 – 2014-09-28 19:07:57
我这样做printf(“%p,%c,%d \ n”,(char *)内存+ i,*((char *)内存+ i), *((char *)memory + i));它给出了2686636,-1,但我注意到,当我使b = 65535第2个地址是空格,-1但是当我使b = 4294967295第4个地址是空格,-1和4294967295是32位,所以我认为它以某种方式工作。 – 2014-09-28 19:24:00
我改变了代码,我认为它现在正在工作chceck我把它贴在最后的问题 – 2014-09-28 20:03:35