平時(shí)使用時(shí)指針與sizeof很難扯上關(guān)系,不外乎就int *p;sizeof(P)=4;但是在一些公司筆試時(shí)就會(huì)常常考察。
提出問題:
int a[5]={1,2,3,4,5}; sizeof(&a)=? sizeof(a)=? sizeof(a[0])=? sizeof(&a+1) =?
混淆了吧,o(︶︿︶)o 唉有時(shí)候我會(huì)苦悶,為什么要選擇程序員這條路呢,而且還要自學(xué)的。自己一個(gè)人找工作好辛苦啊。
解決問題前必須了解指針與數(shù)組的關(guān)系;
指針與數(shù)組當(dāng)然是兩個(gè)不相關(guān)的概念,但是卻在編寫代碼時(shí)可以互用。
①、指針:int a[5]={1,2,3,4,5}; int *p=a;
以指針形式訪問 *(p+4) 表示從p向后偏移4個(gè)位置,然后取值。
以數(shù)組形式訪問 p[0]、p[1]....
②、數(shù)組:int a[5]={1,2,3,4,5};
以指針形式訪問 *(a+4) 表示數(shù)組首地址加上4 個(gè)字符的偏移量
以數(shù)組形式訪問、...
對(duì),他們就這樣的關(guān)系,編譯器總是把以下標(biāo)的形式的操作解析為以指針的形式的操作。
那么 對(duì)于問題
a 在這里代表是的
數(shù)組首元素的地址即a[0]的首地址。sizeof(a)=20
&a 代表的是
數(shù)組的首地址。sizeof(&a)=4
&a+1 表示數(shù)組的首地址+一個(gè)數(shù)組。則 +5*sizeof(int)。所以它表示以指針形式訪問,sizeof(&a+1)=4;
sizeof(a[0]) 其實(shí)是sizeof(1) 一個(gè)int的內(nèi)存。 =4
sizeof(&a[0])、sizeof[&a[0]+1] 表示a[0]的地址+1,是指針類型 ,=4
////////////////////////如有誤解,歡迎指正。
posted on 2011-10-11 23:43
Yu_ 閱讀(673)
評(píng)論(3) 編輯 收藏 引用 所屬分類:
The Interview