- C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net
553 :デフォルトの名無しさん[sage]:2015/01/04(日) 19:51:47.45 ID:9lboT9rs - C++みたく以下のことを行いたいですが実装可能でしょうか
#include "mystack.h" int main() { Stack *s1, *s2; size_t size = 100; s1 = Stack_new(); // 要素を stack.h 内で設定した定数個分確保 s2 = Stack_new(size); // 要素を size 個確保 Stack_delete(s1); Stack_delete(s2); return 0; }
|
- C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net
554 :デフォルトの名無しさん[sage]:2015/01/04(日) 20:12:38.77 ID:9lboT9rs - 間違えました。こんな感じです
関数のオーバーロードはC言語ではできないと思いますが 擬似的に再現することはできますか #include "mystack.h" int main() { Stack *s1, *s2; size_t size = 100; Stack_init(&s1); // stack.c 内で設定した定数個分確保 Stack_init(&s2, size); // 要素を size 個確保 Stack_delete(s1); Stack_delete(s2); return 0; }
|
- C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net
556 :デフォルトの名無しさん[sage]:2015/01/04(日) 20:15:42.94 ID:9lboT9rs - また間違えました…
連投すみません… #include "mystack.h" int main() { Stack s1, s2; size_t size = 100; Stack_init(&s1); // stack.c 内で設定した定数個分確保 Stack_init(&s2, size); // 要素を size 個確保 Stack_finish(&s1); Stack_finish(&s2); return 0; }
|
- C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net
557 :デフォルトの名無しさん[sage]:2015/01/04(日) 20:16:29.02 ID:9lboT9rs - >>555
やはり size = 0 のようにするのが普通ですか ありがとうございます
|
- C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net
560 :デフォルトの名無しさん[sage]:2015/01/04(日) 22:03:19.80 ID:9lboT9rs - >>559
おすすめはしないというのは 予期しない変数を受け取った場合の処理が 面倒ということで合ってますか?
|
- C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net
562 :デフォルトの名無しさん[sage]:2015/01/04(日) 22:28:09.23 ID:9lboT9rs - >>561
分けると要素数を指定して確保する場合に initとresizeを両方書くのが面倒だと思いました(2回確保してますし…) どのみち足りなくなったらresizeするので両方書くんですが… CSTLの存在を初めて知りました 見て勉強します ありがとうございます
|
- C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net
568 :デフォルトの名無しさん[sage]:2015/01/04(日) 23:42:24.96 ID:9lboT9rs - >>564
reserveで合ってます 今、足りなくなったら自動的に拡張するものを自分で作ってます
|