#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int tab[] = {4, 6, 8, 9, 20};
char *p = 0;
/* The type that & returns is a
* pointer type, in this case, a
* pointer to the 4th element of
* the array.
*/
p = (char*) &tab[4];
/* As %d expects an int, we cast
* p to an int *, and then
* dereference it.
*/
printf("%d\n", *(int *)p);
return EXIT_SUCCESS;
}
2条答案
按热度按时间thtygnil1#
几乎可以肯定,您使用的是
int
为4字节的体系结构,以及先存储“最小”字节的little-endian体系结构。因此,
int
值4
存储为:int
值20
存储为:内存中的整个数组如下所示:
现在,当您将这20个字节作为字符进行迭代时(因此一次迭代一个字节),结果应该不再令人惊讶。
yqlxgs2m2#
在您的计算机上,
sizeof
和int
是4
字节,而sizeof
和char
根据定义是1
。因此,使用
p
,您将逐字节打印int
。关于这一点:
输出:
编辑:上面的代码依赖于字节序。