作者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