我有一个问题而不是问题(女巫可能会出现记忆问题)..我写了这个简单的程序:
#include <stdio.h>
#include <stdlib.h>
int multi(int x, int y);
int main(){
int x;
int y;
printf("Enter the first number x: \n");
scanf("%d",&x);
printf("Enter the second number y: \n");
scanf("%d",&y);
int z=multi(x,y);
printf("The Result of the multiplication is : %d\n",z,"\n");
printf("The Memory adresse of x is : %d\n",&x);
printf("The Memory adresse of y is : %d\n",&y);
printf("The Memory adresse of z is : %d\n",&z);
getchar();
return 0;
}
int multi(int x,int y){
int c=x*y;
printf("The Memory adresse of c is : %d\n",&c);
return c;
}
如您所见(如果您使用 C 开发),此程序输入 2 个 int 变量,然后将它们与 multi 函数相乘:
得到结果后,它会显示每个变量在内存中的位置(、c
和x
)。y
z
我已经测试了这个简单的例子,这些是结果(在我的例子中):
The Memory adresse of c is : 2293556
The Result of the multiplication is : 12
The Memory adresse of x is : 2293620
The Memory adresse of y is : 2293616
The Memory adresse of z is : 2293612
如您所见,在 main 函数中声明的三个变量,x
具有封闭的内存地址 (22936xx),在 multi 函数中声明的变量 c 具有不同的地址 (22935xx)。y
z
查看x
,y
和z
变量,我们可以看到每两个变量(即 : &x-&y=4
, &y-&z=4
)之间有 4 个字节的差异。
我的问题是,为什么每两个变量之间的差异等于 4?