gpt4 book ai didi

c - 内存地址增加四

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:46 26 4
gpt4 key购买 nike

我在做一个指针练习,在试验代码时遇到了一个疑问。为什么数组中的这些内存地址会增加4?

例如我的输出是

Value of var[0] = 2686720

Value of var[1] = 2686724

Value of var[2] = 2686728

代码如下:

#include <stdio.h>
#include <conio.h>
main ()
{
int var[3]= {10,100,200};
int *ptr[3],i;

for (i = 0; i < 3; i++)
{
ptr[i] = &var[i]; // assign the address of integer.
}
for (i = 0; i < 3; i++)
{
printf("\n\nValue of var[%d] = ",i);
printf("%d",ptr[i]); //var[0]=10 var[1]=100 var[2]=200
}
getch();
return 0;
}

最佳答案

首先var[i]int类型的数组。因此,该数组的每个元素都将占用一个 int 的大小。 int 的大小是 4 字节。

接下来,您将使用ptr[i] 来保存var 数组元素的地址。因此,对于每个元素,ptr [i]value 增加4

在这里,为了更好地理解,您应该在 printf() 中使用 "%p""0x%x" 格式说明符处理指针。

此外,您应该更改打印语句

printf("\n\nValue of var[%d] = ",i);

printf("\n\nAddress of var[%d] = ",i);

因为前者传达了错误的信息。实际上输出值是var[i]地址。如果要使用ptr[i]打印var[i]的值,可以考虑使用*ptr[i]

关于c - 内存地址增加四,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com