Re: [情報] 今天實習課的第二題

看板NTPU-CSIE97作者 (大英 )時間16年前 (2009/03/24 19:28), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
引用原文中的扣得然後有些問題 : ========================CODE========================== : template <> char* maxn(char* array[], int n){ : ... : return array[maxi]; : } : ... : cout << maxn(s, 5) << endl; : ====================================================== 這是用printf: : printf("%x", array[3]); 用printf印出記憶體位置時我用的是%p , 印出來的記憶體位置(我自己的電腦)是00417810 但是用%x卻印出 417810 用count: : 第二種方法還是用cout,不過要加上強制轉型,把回傳值轉成int, : 告訴cout,你給我用int輸出!! : cout << hex << (int)maxn(s, 5) << endl; : 這樣子也是可以的。 請問強制轉型是指把原來回傳的值(指向char的pointer)轉成int?? 如果用上面引用的扣得印出, 則出現417810 若把(int)maxn(s, 5)改成(int *)maxn(s, 5)則會印出 00417810 回傳的值是一個char指標, 轉成int後是否就使它失去指標的功能 但記憶體位置仍然存放在裡面? 所以cout很單純的可以印出 轉成int * 之後它會強制轉為一個指向int的指標 這時它卻不會印出指向的字元的ASCII碼?? 以上是想分辨其中的不同以及了解原因,另外hex是只用16進位印出嗎? cout << (int *)maxn(s, 5) << endl; 如此印出仍然出現00417810 可以講解一下嗎 謝囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.50.232

03/24 19:34, , 1F
好認真唷 可是我看都不想看耶( ′-`)y-~
03/24 19:34, 1F
文章代碼(AID): #19oCFay6 (NTPU-CSIE97)
文章代碼(AID): #19oCFay6 (NTPU-CSIE97)