我試了一個代碼,看看&i
和i
之間有什麼區別,如果i
是一個數組。我的假設是,i
代表數組的起始地址,我不知道如果我打印&i
以後會發生什麼。 結果令人驚訝(對我來說),因爲i
和&i
都是數組的起始地址。如果我是一個整數數組,那麼在&i和i之間的C有什麼區別?
#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
這是同一個地址。
但是,如果我用一個指針來詮釋:
#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
和&i
,爲什麼&i
不是指針i
的內存地址?
予解釋的地址,請參閱此[鏈接]: [sizeof(&arr)返回什麼?](http://stackoverflow.com/questions/15177420/what-does-sizeofarr-return/15177499#15177499)檢查。 –
閱讀[comp.lang.c常見問題](http://www.c-faq.com)的第6部分。 –