&i
我尝试了一个代码来看看和i
ifi
是一个数组有什么区别。我的假设是它i
代表数组的起始地址,我不知道如果我也打印会发生什么&i
。结果令人惊讶(对我来说),因为两者都是i
数组&i
的起始地址。
#include<stdio.h>
int main()
{
char str[25] = "IndiaBIX";
int i[] = {1,2,3,4};
printf("%i\n", &i);
printf("%i\n", i);
return 0;
}
结果将是:
2686692
2686692
这是同一个地址。
但是,如果我使用指向 int 的指针:
#include<stdio.h>
#include <stdlib.h>
int main()
{
int *j = (int *) malloc(sizeof(int));
*j = 12;
printf("%i %i %i\n", *j,j,&j);
return 0;
}
结果将是:
12
5582744
2686748
这里我假设第一个是指向的内存区域的值j
,第二个是指向的内存区域的地址j
,第三个是指针本身的内存地址。如果我打印i
and &i
,为什么不&i
表示指针的内存地址i
?