看板 EE_DSnP 關於我們 聯絡資訊
以下是我作了一些試驗的發現: (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
chwt2788:(1) _data 是 private data member 上面寫法真的可行嗎? 03/16 02:56
FATCLOUD:把 arr 轉換成 int 類型的 pointer 再-1 指出去~ 03/16 03:06
FATCLOUD: *((int*)arr-1) 03/16 03:08
chwt2788:樓上破梗? 討論區應該不能直接講做法? 03/16 09:55
ric2k1:哈哈, 看來以後要規定雷文要空一頁... 03/16 12:36
ric2k1:不過回一下原 PO 的問題三, pre-defined type var 的記憶體 03/16 12:37
ric2k1:是系統另外管理的, 所以並不適用這題的方法來拿到 size 03/16 12:38
ilway25:size_t 通常是 unsigned,轉 int 好像不是很好? 03/16 12:41
ilway25:另外 (int*) 這種很 c-style 的不知道老師會不會不喜歡 XD 03/16 12:42