推 ko27tye: a會轉成指標 所以你sizeof的是指標的大小 05/29 22:49
→ l8PeakNeymar: 所以是傳址而非傳值的意思? 請問這可以修正嗎? 05/29 22:51
推 ko27tye: sizeof(*a) 05/29 22:56
→ ko27tye: 函數本來就不吃陣列 你參數的int a[]會自己轉成int *a 05/29 22:57
→ ko27tye: 要用函數處理陣列通常是丟一個指向陣列的指標去處理 05/29 22:59
推 ko27tye: 補充一下,int *a會指向陣列的第一個元素,所有陣列自動 05/29 23:16
→ ko27tye: 轉指標的通通都會指向第一個 所以你要算整個陣列的大小 05/29 23:18
→ ko27tye: 要加總整個陣列內元素的大小 05/29 23:18
→ l8PeakNeymar: 可是無法用sizeof判斷有幾個元素 該如何加總呢? 05/29 23:22
推 ko27tye: 你可以用sizeof(陣列)/sizeof(型態)來取得元素個數 05/29 23:27
→ ko27tye: 方法還很多啦 你可以自己想想看 05/29 23:27
推 LiloHuang: template<size_t N> 05/29 23:30
→ LiloHuang: void test(int (&a)[N]) { 05/29 23:30
→ LiloHuang: std::cout << sizeof(a) << std::endl; 05/29 23:30
→ LiloHuang: } 05/29 23:30
→ LiloHuang: 傳參考進去就可以了,直接印出 N 就是元素個數 05/29 23:31
→ l8PeakNeymar: 感謝 我試試看 05/29 23:33
→ MOONRAKER: sizeof這招不是進去函數就破功了 還是現在改了 05/30 03:07
→ MOONRAKER: compile-time的東東可以這樣用嗎 05/30 03:07
推 LPH66: 那也要函數是宣告指標或無大小的陣列才會先 decay 再傳 05/30 07:48
→ LPH66: 如果是有大小的陣列參考的話是會留著的 05/30 07:48
→ LPH66: 這個東西的進階用法就是 _countof 05/30 07:49
推 ronin728: C語言風格的API都會再給函數一個參數存放陣列長度 05/30 09:30
→ TobyH4cker: 試試template(小聲) 05/30 22:54
推 loveflames: 函數不能傳或返回陣列 05/31 18:42
推 knockbusterx: 新手 哈哈 06/01 00:41
推 EngRookie: 印象中 指標的size 應該統一是4才對? 06/19 10:19