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