Re: [问题] 传阵列后 能在函数中 计算array大小?

楼主: Qoofate (大鲁阁_最强打者)   2015-04-21 21:13:47
※ 引述《Qoofate (大鲁阁_最强打者)》之铭言:
: Hi all,
: 小弟想问一下
: 例如
: saveArrayToFile(char* Array,char dst )
: {
: .... 想计算 传入array的大小 或元素个数,用sizeof(Array)/...
: }
: 但发现好像都算出8byte 指标的大小
: 后来改成saveArrayToFile(char* Array,char dst ,int n)
: 多一个n先计算完后传进 是可以用
: 但是有办法在function中 用Array指标 算出大小吗?
: Thank you~
不好意思 再借问一下
如果传入的array 是一个固定已经宣告好的固定char array[]={1,2,3,4};
可以在function中计算吗
小的想到 如果在func中用ptr 指向array ,在去一个个检查 *(ptr++) 是否等于 null
这样是否可算出元素个数
作者: wenyonba (射后不理很XX啊!!!!)   2015-04-21 21:20:00
不行的,因为传进函式的是指标喔~~
作者: shadow0326 (非议)   2015-04-21 21:26:00
你要这样另外算的话可以传入{1,2,3,4,'\0'}
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-21 21:32:00
这位同学跟你有一样的问题 #1LBCazZt 基本上是没出路的
作者: TobyH4cker (Toby (我要当好人))   2015-04-21 21:38:00
又是在那检查null的...
作者: Push5F (帐号已卖)   2015-04-21 22:39:00
malloc可以这样搞,但是标准通常会传入长度增加可读性后来维护的人可能会抓这bug抓到死...
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-22 02:11:00
这个好笑,现我有一个阵列宣告成char zv[100]={ 0 }传入你这个function里面 count会算出多少
楼主: Qoofate (大鲁阁_最强打者)   2015-04-22 08:45:00
XD 对喔 感谢楼上提醒 ,刚好读的array都没有0 才能这样
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-04-22 09:54:00
除非你能掌握输入资料里面永远不会有某个特定值 才能拿他当guard 而这样做往往也不利于将来 因为这个guard的意思可能会变 如Y2K一到用99当guard的阵列就惨了所以这方面就别想了 除了字串这种早就规定好的以外
作者: TobyH4cker (Toby (我要当好人))   2015-04-22 13:32:00
静态array不就利用sizeof()计算好再传进function就好

Links booklink

Contact Us: admin [ a t ] ucptt.com