作者eorlthexiv (伊歐)
看板EE_DSnP
標題[問題] 關於hw1.2.p3
時間Mon Mar 16 02:36:59 2009
以下是我作了一些試驗的發現:
(1)利用 (arr-1)->_data 可以正確的得到array的size大小
(2)如果將 _data 的型態改為char或bool,利用 (arr-1)->_data 會得到0
(3)如果傳入一般int型態的array,利用 *(arr-1) 會得到很奇怪的數值
(我在linux上試時,得到的數值似乎跟size大小有對應關係,但並不是一對一的對應
在windows上試時得到的數值就真的很奇怪...)
以下是我的問題:
(1)我搞不懂這是怎麼一回事...
(2)如果必須藉由access data member才能獲得size大小的話,那麼這個function就只能
適用於型態為A的array,那function寫成template就沒有意義了
還是說有別的方法可以得到array的size大小?? 希望高手指點...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.67.230
1F:推 chwt2788:(1) _data 是 private data member 上面寫法真的可行嗎? 03/16 02:56
2F:推 FATCLOUD:把 arr 轉換成 int 類型的 pointer 再-1 指出去~ 03/16 03:06
3F:→ FATCLOUD: *((int*)arr-1) 03/16 03:08
4F:推 chwt2788:樓上破梗? 討論區應該不能直接講做法? 03/16 09:55
5F:推 ric2k1:哈哈, 看來以後要規定雷文要空一頁... 03/16 12:36
6F:→ ric2k1:不過回一下原 PO 的問題三, pre-defined type var 的記憶體 03/16 12:37
7F:→ ric2k1:是系統另外管理的, 所以並不適用這題的方法來拿到 size 03/16 12:38
8F:→ ilway25:size_t 通常是 unsigned,轉 int 好像不是很好? 03/16 12:41
9F:→ ilway25:另外 (int*) 這種很 c-style 的不知道老師會不會不喜歡 XD 03/16 12:42