Re: [情報] 今天實習課的第二題
引用原文中的扣得然後有些問題
: ========================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
03/24 19:34, 1F
討論串 (同標題文章)