筆試題:多維陣列全部元素輸出。
昨天有個兄弟去面試,碰到乙個這樣的筆試題:有乙個三維陣列,陣列的維數2*2*3,
要求只用乙個for迴圈,按順序全部輸出陣列元素。藉此機會溫習下陣列與指標的關係。
先做題:陣列的元素都是儲存在乙個連續的位址中的,我認為只要找到該陣列的第乙個
int main(int argc, char* argv)
;for (int i=0;i!=12;++i)
printf("------------------------------");
getchar();
return 0;
}第乙個元素的獲取(windows xp,vc6.0):
一維陣列:
在一維陣列中,陣列名類似乙個指向第乙個元素的指標常量,使用指標運算子就能取出第乙個元素:
int ia[5] = ;
printf("%d\n",*ia);
輸出為:1
下標運算子[ ]是以指標作為運算元的,
ia[i]
被編譯系統解釋為
*(ia+i)
,即表示為ia所
指(固定不
可變)元素向後第i個元素。無論我們是以下標方式或指標方式訪問陣列元素,系統都轉換
為指標方
法實現。
注意:並不是在所有的地方,陣列名可以作為指標指標使用,比如用陣列名來計算陣列的長度時,
sizeof(ia)=20.
二維陣列及多維陣列:
在二維陣列中不能簡單的使用陣列名在指向第乙個陣列元素,請看下面的**:
int ib[3][3] = ;
printf("%d\n",*ib);
(在本人測試的例程中)輸出為:1245016.
在除錯過程中,我發現原來輸出是第一
行的位址,那麼怎樣才能正確輸出的第乙個元素呢?請看如下**:
printf("%d\n",*ib[0]);
輸出為:
1.同樣在三維,以及更多維中使用的下標數等於陣列的維數減1,即可得
到第乙個元素。
有關動態多維陣列的乙個問題
同樣的錯誤,即使你的年齡越大,它會犯同樣的,opps.最近做的c 和c 混合程式設計。昨天上演了一出棧平衡了很長一段時間,今天,我們攻克了bug。既高興又傷心。看看 unsigned char bytes2d unsigned char bytesarray for int i 0 i不得不說,初學...
輸出乙個集合的所有子集
輸出字串的所有子集 如 對 abc 輸出 c b bc a ac ab abc 第一種做法 2 n 遍歷每個字元,每個字元只能取或者不取。取就把該字元加入結果中,遍歷完畢後,輸出結果字串。如下 main.cpp 輸出乙個集合的所有子集 created by zjl on 16 8 10.includ...
讀寫同乙個檔案出問題
在c primer plus 第六版中的第十三章程式設計練習第3題出現了問題。題目 編寫乙個檔案拷貝程式,提示使用者輸入文字檔案名,並以該檔名作為源檔名和輸出檔名。該程式要使用ctype.h中的toupper 函式,在寫入到輸出檔案時把所有文字轉換成大寫。使用標準的i o和文字模式。我一開始就只建立...