我有以下代碼:指針二維數組
int arr[2][2][2]={10,3,4,5,6,7,8,9};
int *p;
printf("%u",arr);
p=(int *)arr;
printf("%u",p);
,輸出
64166
64164
不過,我倒覺得p
和arr
指向相同的內存地址。爲什麼顯示不同的地址?
我有以下代碼:指針二維數組
int arr[2][2][2]={10,3,4,5,6,7,8,9};
int *p;
printf("%u",arr);
p=(int *)arr;
printf("%u",p);
,輸出
64166
64164
不過,我倒覺得p
和arr
指向相同的內存地址。爲什麼顯示不同的地址?
但相同的代碼
#include <stdio.h>
int main()
{
int arr[2][2][2]={10,3,4,5,6,7,8,9};
int *p;
printf("\n%u",arr);
p=(int *)arr;
printf("\n%u\n",p);
return 0;
}
只給出了相同的結果。
讓我們通過代碼
int *p;
printf("%u",p);
p是一個未初始化INT指針。它將打印出內存中的任何內容。
p=(int *)arr;
printf("%u",p);
p現在指向內存中數組的地址,並打印該地址。
哦,對不起,我在代碼中犯了一個錯誤......第一個printf是printf(「%u」,arr),並且由於arr和p指向相同的值,那麼爲什麼第二個printf顯示比較值... – ghostrider 2012-07-27 12:30:15
你想從數組中打印*值*嗎? – Brian 2012-07-27 12:31:44
此外,'%u'用於打印'unsigned int','%p'打印一個指針。 – 2012-07-27 12:31:47
第一個打印輸出打印一個未初始化的值。 – dasblinkenlight 2012-07-27 12:26:31
我跑了同一段代碼,結果是:3216608828,3216608828! – Rsh 2012-07-27 13:09:02
清除懷疑的問題... – ghostrider 2012-07-27 13:15:07