【发布时间】:2023-01-08 04:11:38
【问题描述】:
我在 C 中运行了这几行代码:
int tab[]={4,6,8,9,20};
char *p;
p=(char*)tab
问题是如何使用指针 p 打印 20 的值。
所以我使用了一个for循环来查看p发生了什么
for(int i=0;i<20;i++){
printf("%d ",p[i]);
}
我得到了这个输出:
4 0 0 0 6 0 0 0 8 0 0 0 9 0 0 0 20 0 0 0
我想了解那些出现的零背后的逻辑。
【问题讨论】:
-
当您似乎知道
char和int的大小不同时,您还希望显示什么?你知道数字是如何存储在内存中的吗? -
int使用 4 个字节,char使用 1 个字节。因此,当您使用p[i]时,您会看到数字中的每个 4 个字节。 -
我相信
int在你的机器上是4字节。而且您似乎知道5ints 的总和为20,那为什么您看起来很惊讶?您使用p一次打印一个字节,因为char根据定义为1字节。
标签: arrays c pointers casting char