- 1 名前:デフォルトの名無しさん [2007/10/24(水) 04:07:56 ]
- なんと!意外にもスレが無かったので立ててみました
先日のソフトウェア開発技術者試験午後UのB木のポインタ表現 近年の基本情報技術者試験の午後C言語問題の自己参照構造体 など物凄く出来が悪いです。 ゆとり?文系?自作減少? ブラックボックス化されてメモリ管理やコンピュータの細かい知識が不要となった? 本当にポインターは必要なのか!?議論しましょう
- 720 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:25:29 ]
- >>717
ポインタ=何かを指す=指向性のあるもの。よって、 char *cp は「char型へのポインタ」 void **pp は「void型へのポインタへのポインタ」
- 721 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:27:03 ]
- うん
- 722 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:28:10 ]
- >>720
それでもいいけどね、「へ」は無くてもいいんだよ。
- 723 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:35:02 ]
- >>720
型は指してないんじゃね?
- 724 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:43:12 ]
- 俺も意識して
「〜のポインタ」とか「関数ポインタ」とかじゃなくて 「〜へのポインタ」って言ってる
- 725 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:48:16 ]
- それでも通じるからいいんじゃね
- 726 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:48:18 ]
- 「へ」は重要だ。「へ」があることによって、何かを指してると認識できる。
「〜のポインタ」だけだと意味が通じない。 …ということを言いたかった。
- 727 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:48:59 ]
- いや「へ」はなくても通じるんだよ
- 728 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:53:22 ]
- そもそもポインタって何かを指すものじゃん
- 729 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:32:03 ]
- 初心者にとって、という話だろ?「へ」はあったほうがいいよ。
既に理解してる人にはどっちでもいい。
- 730 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:38:55 ]
- 初心者にとっても有っても無くても同じ。
- 731 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:56:14 ]
- じゃあvoid ***pppはなんていうの?
char ****cpppはなんていうの?
- 732 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:01:12 ]
- そんなものは出てきてはいけないw
- 733 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:53:13 ]
- ___ ━┓
/ ―\ ┏┛ /ノ (●)\ ・ . | (●) ⌒)\ . | (__ノ ̄ | \ / \ _ノ /´ `\ | | | | ___ ━┓ / ― \ ┏┛ / (●) \ヽ ・ / (⌒ (●) / /  ̄ヽ__) / . /´ ___/ | \ | |
- 734 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:38:12 ]
- 「への」に1票
- 735 名前:デフォルトの名無しさん [2007/12/22(土) 22:39:37 ]
- >>731
void ***pppやchar ****cpppなんて使う機会ない
- 736 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 02:26:02 ]
- へ へ
の の も へ
- 737 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 04:23:45 ]
- >>731
初心者がそんなもの使うかアホ 極論に持って行こうとするなよボケ
- 738 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 13:59:37 ]
- ダブルポインタでええやん。
- 739 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:23:10 ]
- じゃあダブポで
- 740 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:23:33 ]
- ゾッ
- 741 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 02:33:11 ]
- **のまま使ってる時点でほとんどクソコードだろ。
ふつうtypedefにするかstructにいれる。
- 742 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 09:29:32 ]
- いやいや、ある構造体の領域をヒープから確保する関数の場合とか、
**を渡した方が自然な場合もある。
- 743 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 13:07:01 ]
- どうせならデュアルポインタのほうがかっこよくね?
- 744 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 14:07:43 ]
- クアッドポインタにオクタポインタっすね
- 745 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:19:37 ]
- ポンタでよくね?響きが萌える
- 746 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:22:22 ]
- ポイポインタ
- 747 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:46:28 ]
- つ[*&]
- 748 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 21:01:54 ]
- ポインヨ
- 749 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 22:06:00 ]
- >>745
あのjunkyのおっさんですか?
- 750 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:05:43 ]
- ツインポインタ
- 751 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:39:04 ]
- ポインポイン
- 752 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 00:40:28 ]
- ポインティングゥー!ポインタァー!!!
- 753 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:17:22 ]
- 日本語でいいだろ。「二次ポインタ 」
- 754 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:42:06 ]
- 「ポインタ」も日本語にしろ
- 755 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:46:15 ]
- 刺す人
- 756 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:46:48 ]
- そういわれればポインタの日本語訳って見かけないね
イテレータは反復子と訳されるのに
- 757 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:55:56 ]
- じゃ、「二次指示子」
- 758 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:59:17 ]
- ポインタの和訳は…そうだな…「オブジェクトリファレンス」ってのはどうだい?
- 759 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 03:35:43 ]
- 参照じゃねーかw
- 760 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 05:40:44 ]
- その前に突っ込むところがあるだろw
- 761 名前:デフォルトの名無しさん [2007/12/27(木) 07:59:20 ]
- ポインタはウルトラマンセブンに出てくる乗り物だよ
- 762 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 13:16:11 ]
- ウルトラマンのやつは「ポ↓イ↑ン↑タ↓ー↓」
コンピュータ用語のほうは「ポ↑イ↑ン↓タ↓ー↓」
- 763 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 14:43:31 ]
- 違うだろ。
- 764 名前:デフォルトの名無しさん [2007/12/27(木) 16:35:25 ]
- 和訳なら矢印だな
- 765 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:19:45 ]
- int *ip
int* ip ptr<int> ip 1番目より2番目の方が、2番目より3番目の方がわかりやすいと思うんだけどどうよ。
- 766 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:26:25 ]
- どうといわれても
- 767 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:42:59 ]
- ポインタ宣言子と間接参照演算子が別の記号だったら混乱起こさなかったのに。
- 768 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 19:10:47 ]
- C++のスマートポインタはその点で気が利いてる。
Cだと表現しようがないんだけど。
- 769 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 19:54:56 ]
- いまさら宣言の記法に注文つけてどうなる。
- 770 名前:デフォルトの名無しさん [2007/12/27(木) 20:27:21 ]
- 宣言の記法に注文付けたい奴は
typedef int* intptr; とでもしやがれってんだ。 こんな事してるソース見たことはないが でもwin32apiのソース読むと typedefしまくりで、あんぐりする。
- 771 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:54:56 ]
- int* p, q;
- 772 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 21:47:44 ]
- int q, *p;
これと>>771が等価ってのはひどい。
- 773 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 21:47:47 ]
- >ポインタのポインタ
ハンドル…。
- 774 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 06:51:30 ]
- >>773
昔のMac以外にそういう呼び方をする流儀ってあるのか
- 775 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 07:22:09 ]
- >>774
別に流儀じゃなくて、一つのメモリ管理モデルとしてあるわけで。 (MacOSに影響受けているから当然と言えば当然だけど)PalmOSでもハンドルで管理していたし。
- 776 名前:デフォルトの名無しさん [2007/12/29(土) 12:23:49 ]
- string使えはええやん。
- 777 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:04:32 ]
- は?
- 778 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 16:26:01 ]
- CPUエミュレータ作るとき、関数ポインタの配列を使いまくった。
- 779 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 06:19:59 ]
- クラスのメンバ関数の宣言にvirtualを使用すると関数ポインタになる件に関して
クラスの変数の初期化が面倒だからmemset(this,NULL,sizeof(*this))でうっかりvirtualを含むクラスを初期化してしまうと実行時エラーにw
- 780 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:19:27 ]
- あたりまえやん
- 781 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:12:26 ]
- >クラスの変数の初期化が面倒だから
そういう用途にはmemset使うなってエロイ人が言ってたよ。
- 782 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:58:20 ]
- memsetなんてもうずーっと使ってないなー
- 783 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 20:01:49 ]
- >>779
>memset(this,NULL,sizeof(*this)) ここでNULL使うのはおかしくね?
- 784 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 22:14:45 ]
- そもそもmemset()使うのがおかしいからどうでもいいよ。
- 785 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 22:47:58 ]
- www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html
>局所変数、特に集成体を宣言した後、実際に必要かどうかに関わらず、必ず memset でゼロクリアする人は大勢います。 >しかし、そんなコードを見かけたら、それを書いた人のコードはすべて疑ってかかった方がよいかもしれません。
- 786 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 22:55:34 ]
- 構造体単体でもmemsetする奴は危険だよ
- 787 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:03:41 ]
- 別にmemsetそのものは危険じゃないよ。
- 788 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:09:05 ]
- する奴は
って書いてある
- 789 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:10:03 ]
- うん、そうだね。書いてあるね。
でもそんなことは関係なしにmemsetそのものは危険じゃないよ。
- 790 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:12:30 ]
- ポインタと全然関係ない話題ですねw
- 791 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:17:06 ]
- struct A a;
memset(&a, 0x00, sizeof(struct A)); もう馬鹿かとw こんな後に if( a.hoge != NULL) とかやってる奴ちょっと来い ぬっこしてやるから
- 792 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:20:21 ]
- 勝手にすればぁ〜
- 793 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 05:16:33 ]
- 局所変数の初期化って不要なの?
struct { int a; int b int c; } data; struct data; data.a = 0; とやったとき、bとcには何が入っているのか確定してる?
- 794 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 06:47:12 ]
- もちろん不定
- 795 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 07:40:39 ]
- >>793
スレ違い。まぁ、そもそもコンパイル通らないだろうからどうでもいいけど。
- 796 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 09:06:04 ]
- 構造体を初期化するのにmemset()を使わないなら、memset()なんて何に使うのさ?
そもそもゼロクリアなんていらねーよ、って話?
- 797 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 10:27:06 ]
- >>796
そもそも NULL == アドレス0 って保証はないわけなんだが
- 798 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 11:20:52 ]
- >>797
メンバにポインタが含まれる構造体の話か。でもそれなら、 struct DATA data[10] = {0}; という書き方も正しい保障は無いということになるよね。どうすりゃいいの?
- 799 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 12:05:18 ]
- ={0} は正しい。memsetでゼロクリアするのとは異なる。
- 800 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 12:14:52 ]
- >>799
>>797
- 801 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 13:42:40 ]
- >>800
void *p = 0; などとしたとき、p はアドレス 0 を指すわけじゃないぞ。 定数 0 は処理系依存のヌルポインタのビットパターンを作り出す。 struct DATA data = {0}; は、構造体 DATA の各メンバを 定数の 0 (ビットパターンが 0 なわけではない) で初期化するから、大丈夫だよ。
- 802 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 18:47:35 ]
- 釣られすぎ
- 803 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:09:46 ]
- なるほど、釣りだったということにしたいわけか
- 804 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 22:26:20 ]
- ヌルポ インタ
- 805 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 00:41:13 ]
- >>804
ガッ
- 806 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 13:46:21 ]
- 今はVSでクラスなんかをガシガシ使ってるから使わないけど、
一昔前にUNIXで開発してた頃はstructでデータ構造を設計して、 使用時には memset(&data, 0x00, sizeof(data)); などのように初期化してから使う、というのが常套句だったよ。俺は。
- 807 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:09:53 ]
- はい、スレの皆さん
新年特別DQN >>806入りました〜 かわいがってやってください。w
- 808 名前:806 [2008/01/14(月) 17:20:45 ]
- ■データ構成
#define DATAMAX 255 struct { struct { int code; char name[16]; } table[DATAMAX]; } data; ■初期化 memset(&data, 0x00, sizeof(data)); ■DB等からセット for(i=0; i<DATAMAX; i++) { data.table[i].a = a; data.table[i].b = b; } ■取得関数 char empty[16]; char *getName(char *code) { for(i=0; i<DATAMAX; i++) return data.table[i].name; return empty; } ■使用 strcpy(name, getName(code));
- 809 名前:806 [2008/01/14(月) 17:21:05 ]
- >>807
かなりはしょってるが、上のレスのようにやってた。 DQN?俺がDQN? 他人に頼らず、テメーだけの力で批判でも何でもしてみろや。 他力本願な口だけ野郎。
- 810 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:35:52 ]
- コンストラクタで初期化してメンバは隠蔽した方がいいと思う
- 811 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:53:10 ]
- 【虎の威を借る狐】
他人の権勢に頼って威張るザコのたとえ
- 812 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:12:21 ]
- >>809
本当にそんな汎用性のないキモイおもちゃ作り ずっとやってたの?w 取得関数とかクエリ合わせてチューニングも 選択もできねーしこんな設計じゃ拡張性もない ゴミすぎるだろw?
- 813 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:24:30 ]
- >>806
WindowsAPIのほとんどは今もそうだね
- 814 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:46:28 ]
- >>809
DQNかどうかは兎も角、>808を書いている時点でお郷が知れている。
- 815 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:53:08 ]
- やっぱり>>806は痛い奴だったか
そんな臭いがプンプンしたしなぁ 反論してみ?
- 816 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:58:26 ]
- お前のかあちゃんデベソ
- 817 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:59:35 ]
- きさまっ!いってはならないことをぉおぉぉおおおお
- 818 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:06:55 ]
- 環境や用途によってやり方は違うだろうに「キモイ」って評価しちゃう奴はある意味スゲェと思う。
- 819 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:23:30 ]
- >>818
OSS宗教様達は多いよ リーなんちゃらという変態指導者の 影響だろうけど 自分達の受け入れたくないコード=グロ って定義だし。
- 820 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:35:04 ]
- 実際見たら、グロなんだろ。
- 821 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:31:10 ]
- グロいものほど美味い。これは定説です。
- 822 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:03:52 ]
- ポインタ使った事無いから事故にならなかったんだろ。
こっそりやってるなら、どうせわからないからいいけど、 堂々と自慢されると、やっぱりな、あれだよ・・・
- 823 名前:796 mailto:sage [2008/01/15(火) 09:15:50 ]
- よーするに、memset()は使い道が無いってことかい?
- 824 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 10:40:09 ]
- >>823
環境依存でもよくて、標準の真っ当なコードに較べれば多少は速いかもしれないコードを使いたくて、 Intrinsicが用意されていないか使えなくて、インラインアセンブラが用意されていないか使えなくて、 他の手段が見つからないか、過去の遺物を使う為に必要。
- 825 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 12:05:51 ]
- とりあえず書いとけば誰かが直してくれるさ
- 826 名前:808 mailto:sage [2008/01/15(火) 14:26:44 ]
- まともな反論は>>812くらいか。
かなりはしょってて共通の関数なんかをすべて省いてるから>>812の感想はもっともだけど、 実際の事務処理アプリの現場ではその「キモイおもちゃ作り」とやらが蔓延していたのもまた 事実としてあるんだから、自分だけ高みから見下して一蹴してしまうすような>>812は、俺には 少し世間知らずに見えてしまうな。 >>815 「やっぱり」ってなんだ? テメーで反論せずに誰かに反論してもらって「やっぱり」って思ったの? まさに>>811に出てる「虎の威を借る狐」=ザコだなお前。 あと「反論してみ?」って見下してるけど、テメーは何も言ってないよねw なんなんだお前は〜w
- 827 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 14:27:45 ]
- こんなネタで盛り上がれるお前らの時間の贅沢な使い方に脱糞
- 828 名前:808 [2008/01/15(火) 14:31:40 ]
- このスレ、極少数は経験も知識も豊富っぽいのがいるかも知れないけど、
その他はザコばっかだね。しかも性格が悪すぎ。 >>806に対しての>>807は何だ。 知識も経験もないけど一方的に悪口言ってストレス解消ですか? 反論したいならテメーでしろ。 できないなら実のある話しろやボケ。 だから過疎るんだよこの板。
- 829 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 14:33:00 ]
- うん。
- 830 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 15:49:25 ]
- 血圧が高いんじゃない?
高血圧は万病の元だよ。 まじで心配
- 831 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 17:50:03 ]
- >>828
で、ちみはポインタの何がわからなくて躓いてるんだ?
- 832 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:12:13 ]
- ポインタとmemsetって関係なくね?
- 833 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:19:10 ]
- もとは、ポインタをビットパターン0にしちゃだめだろ、って話だったけどな。
- 834 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:26:38 ]
- >>810といい、>>816と>>817の自作自演といい、ガキが多いのは感じる
ゆとりって言葉は嫌いだけどつい使ってしまいそうな程
- 835 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:31:55 ]
- memsetの話出てからこのスレつまんなくなった
- 836 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:48:20 ]
- どこまで行けば面白くなるのか遡ってみたら>>1に到達してしまった
- 837 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:51:28 ]
- >>834とか>>828あたりで十分面白いだろ。
- 838 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:15:09 ]
- 結局memsetで初期化することの問題点は、
浮動小数点数やポインタの内部表現が環境依存であるから 0.0やNULLに初期化されるとは限らないということだけ?
- 839 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 22:02:23 ]
- >>838 そだよ
つか, memset なんて組み込みやるときの bss の初期化にしか使った事ねぇし…
- 840 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:36:15 ]
- 某A賞のシステムでもそんなの誰も気にせずmemsetしてるけどな
- 841 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:14:03 ]
- Cでgotoは絶対に使ってはいけない、という神話に似てる
- 842 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:51:46 ]
- >>835-837
m9(・∀・)自作自演だろ!! 違うかな? たぶん>>816-817と同一人物と見た。もしこの推測が合っていたら、 おまいは姑息で卑怯なこざかしい人ですね
- 843 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 14:04:59 ]
- まじで病院行け。
- 844 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 14:44:02 ]
- 835は俺です
他は違います
- 845 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:18:02 ]
- 頭のおかしい人にマジレスしてもw
- 846 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:28:36 ]
- __,. -─-- 、_
, - ' _,´ --──‐- ) ,イ´__-___,. -‐ '__,. - '´ `ー----, - ' ´ ̄ `` 、__ __,ィ ヽ. `ヽ. , '⌒Y / 、ヽ ヽ ヽ. / / i /l/|_ハ li l i li ハ . // 〃 /l i|j_,.//‐'/ lTト l、l j N i | {イ l / l li //___ リ_lノ lル' lハ. ソ ___◎_r‐ロユ i| /レ/l l l v'´ ̄ , ´ ̄`イ !| ll,ハ └─‐┐ナ┐┌┘ _ ヘ____ ハ| ll∧ハヽ ト、 '''' r==┐ '''' /l jハ| ll ll /./┌┘└┬┘└┼────┘ロコ┌i 〃 ‖ レ'¨´ヽiへ. _ 、__,ノ ,.イ/|/ ノ ll l| </  ̄L.l ̄ ̄L.lL.! ┌┘| ll ll { ⌒ヽ_/ } ー‐<.__ ′ l| ‖ ‖ ‖ ヽ, /、 〈 |:::::::| `ヽ ‖ ‖ {. ハ ヽ Y`‐┴、::::v l ‖ ‖ |iヽ{ ヽ_ゾノ‐一’::::ヽ. | ‖ ‖ |i:::::`¨´-- :::......:...:.:.::.}| ‖ ‖ |i::::::ヽ._:::_:::::::::::::::::::_ノ | ‖ ‖ |i::::::::::::i___:::::::::::/ | jj::::::::r┴-- `ー‐ '⌒ | 〃:::::::マ二 _,ノ //::::::::::::i ー 一 '´ ̄::. ,','::::::::::::::i::::::::::::::::::::::i::::::ヽ
- 847 名前:デフォルトの名無しさん [2008/01/18(金) 13:58:42 ]
- ぴぴるぴるぴるぴぴるぴ〜
- 848 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:55:30 ]
- memsetだってwin32api使ってたらよく使うし
まぁ、ようは、どんな関数でも使う奴しだいだろ
- 849 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:05:01 ]
- ほとんど見かけないようなプラットフォーム向けにも移植性を確保しておきたいかどうかだな
zlibみたいなライブラリではそうする価値があるかもしれないが、俺が書くようなコードではどうでもいい…
- 850 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:27:36 ]
- >>849
スピード命のコードだと, 内周ループで数エントリの構造体を memset するのってやたらコストがでかい。 実際には、サブルーチンコールのオーバーヘッドがでかいんだが… 去年 MPEG 関連の仕事を途中から引き継いだんだけど、とろくって 使い物にならなかった元のコードの memset を代入文に変えただけ で実行時間 60% 程度まで短くなった。
- 851 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:35:04 ]
- それは使っているコンパイラが悪いような希ガス。
- 852 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:35:30 ]
- >>850
memset初期化を使うのは、システム起動時か、再起動時でしょ。 あとはオブジェクトが生成されたときとか。 頻繁に生成、破棄を繰り返すようなオブジェクトで、システム上重要な パフォーマンスに影響をあたえるものにたいして、memset初期化をするかしないか というのは「高速化」の話。memset初期化のよしあしの話ではない。
- 853 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:35:42 ]
- >>850
まぁそれはまた別の話かと
- 854 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:54:00 ]
- >>851
それは言えてるんだが、組み込み物ではコンパイラの選択肢は限られる。 ましてや、クライアント指定のコンパイラだ >>852 > システム上重要なパフォーマンスに影響をあたえるもの に、対して memset で初期化しておいて、直後にその大半を意味のある 値で再度上書きしてた。 > よしあしの話ではない。 かもしれないが、元のコードを書いた奴の神経をうたがったわな。
- 855 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:57:38 ]
- Win32APIみたいに設定項目が山のようにあり、
常に全部を使うわけでもなく、 0で埋められる項目の頻度が高ければ十分ありだろ。 C/C++以外では今時クラスインスタンス0フィルされる言語も珍しくもないし。 ケースを指定するでもなく一般論としてあーだこーだいってる奴はアフォ。
- 856 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:11:50 ]
- >>855
いいえ。 高が、struct someStruct foo = {0} で済むことのためにmemset()を使う必然性は殆どありませんね。 それがstruct someStruct * foo = malloc(sizeof(* foo))した領域でも同じこと。
- 857 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:29:25 ]
- memset使わないで
struct someStruct * foo 何か処理 foo = {0};って感じでまた初期化すればいいだけ memset使うやつは馬鹿今の公開されている まともなソースでmemset使ってるのコードは皆無だぞ?
- 858 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:31:27 ]
- >>857
>foo = {0}; それ無理じゃね
- 859 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:38:01 ]
- 0fillがいかんからmemsetがいかんに話がずれてきてるな
- 860 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:38:59 ]
- パフォーマンスだけに限って言うと、memsetをインライン展開するコンパイラなら使う事もある。
- 861 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:50:15 ]
- >高が、struct someStruct foo = {0} で済むことのため
宣言と同時に初期化しない場合はどうするの? というよりこれってコンパイラ依存なんじゃないの?
- 862 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:51:49 ]
- memsetは危険だから使うなって
manとかMSDNに記述あるんだな
- 863 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:54:46 ]
- >>862
具体的に書いてくれ。調べるの面倒
- 864 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:55:37 ]
- お前は何を言っているんだ
- 865 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:05:01 ]
- manページより:
>説明 >memset() は s で示されるメモリ領域の先頭から n バイトを c で埋める。 >返り値 >memset() は s へのポインタを返す。 >準拠 >SVr4, 4.3BSD, C89, C99, POSIX.1-2001. 俺の目がおかしいのかもしれないが危険性がどこにもみつけられない。 MSDNとか読むきしないから他のヤツよろしく。
- 866 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:09:13 ]
- >memset() は s で示されるメモリ領域の先頭から n バイトを c で埋める。
これは嘘だろw nバイトをcで埋める可能性もあるが正解
- 867 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:10:50 ]
- >>866
日本語でおk
- 868 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:13:06 ]
-
冬 真 っ 盛 り
- 869 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:15:43 ]
- 埋めない可能性もあるのか?
まぁSEGVるかもしれんが
- 870 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:18:25 ]
- >>869
>まぁSEGVるかもしれんが >>866がそんなことで「埋めない可能性がある」とかバカなこというわけないじゃないか。 >>866は、きっともっと違った根拠があっていってるのだよ。
- 871 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:19:58 ]
- ECCメモリを使っていない場合に起こるのかもしれないなw
- 872 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:27:17 ]
- >>871
ワロスwww その「可能性」言い出したら、マニュアルなんて書けない気がするがwww
- 873 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:28:46 ]
- 釣り堀だなw
- 874 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:35:45 ]
- >>867-873
こんなに釣れた
- 875 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:40:41 ]
- >>874
トイウコトニシタイノデスネ
- 876 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 12:18:16 ]
- struct someStruct foo = {0}
これはできるけど、動的確保した構造体だと無理じゃね?
- 877 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 12:21:34 ]
- >>876
C99は可能 お前あほ杉w
- 878 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:00:41 ]
- >>876
struct someStruct * foo = malloc(sizeof(* foo)); struct someStruct blank = {0}; * foo = blank; よほど気の利かないコンパイラでもなければ、blankの実態は作られない。
- 879 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:06:25 ]
- なんと言う糞コードというか糞スレ・・・
- 880 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:14:39 ]
- >struct someStruct blank = {0};
こんなコンパイラがサポートしている「かもしれない」機能を 「使わないのはおかしい」と主張されてもな。
- 881 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:20:18 ]
- >コンパイラがサポートしている「かもしれない」機能
そうなの?
- 882 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:21:52 ]
- >>880
サポートしていないコンパイラをご存知ならご提示くださいませ。 以後規格外品として、広く存在を知らしめてまいりたいと思いますので。
- 883 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:22:15 ]
- >>881
そうだよ
- 884 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:23:16 ]
- >>882
むかし使ってた、ARMの純正コンパイラではサポートされてなかったな。
- 885 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:23:35 ]
- >>882
組み込み業界じゃザラにあるが…
- 886 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:24:52 ]
- もし論点があってそれを覚えているのなら3行にまとめてくれたまへ
- 887 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:26:15 ]
- つまり、昔のARM純正コンパイラは構造体の初期化ができないと?
- 888 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:26:47 ]
- >>884, 885
つか、>>882 は「Cが処理系に依存しない高級言語だ」って 思ってる可愛そうな奴なんだよ
- 889 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:28:01 ]
- >>887
いや、全部のメンバに代入すればOK struct A { int a; int b; }; OK:struct A a = {0, 0}; NG:struct A a = {0};
- 890 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:42:06 ]
- お前らまずは日本語を学べ
スレタイが読めるようになったらまた来い
- 891 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:37:52 ]
- ポインタは友達!
- 892 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:53:40 ]
- ポインタ「げ。また>>891だよ・・・マジウザイ・・・
- 893 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 01:38:56 ]
- ひでえw
- 894 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:51:06 ]
- 昔記事を見て馬鹿にしてた教材が一番わかりやすかった
- 895 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:18:11 ]
- memsetを使う利点は使い方によっては構造体の初期化のソースを短く出来る事かな
巨大な行列を持つ構造体を初期化するとか普通に代入でまかなうとマジで馬鹿にならないくらいソースが膨らむから ループで回して初期化するのも遅いしな
- 896 名前:デフォルトの名無しさん [2008/01/21(月) 00:52:45 ]
- Cプログラマ必須テキストです!
mori.eco.to/
- 897 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:23:47 ]
- >>896
どうでもいいのだが・・・ >当然ですが、あらゆる標準関数の使用を認めません。 > >・strlen() を自作せよ。 >・strcat() を自作せよ。 標準関数の使用を認めないくらいなら、strlenとかstrcatとかキケンな 関数じゃなくて、ふつうはもっと安全な代替関数を自作するでしょ。
- 898 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:16:15 ]
- >>896
>C++未経験ながら、1人でC++の10万行のソースコードの保守及び、3万行の開発を行った。 これ単にCとして使ったとかじゃ
- 899 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:38:15 ]
- いまどき行数で規模示すなんて
クラス数と各クラスのメソッド数で競ってくれ っつーかすれ違いか
- 900 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:57:11 ]
- 競うなよ。どっちも少なければ少ないほど良い。
- 901 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 05:07:32 ]
- さすがにクラスは適切な数ってのがあるだろうな。
- 902 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 11:28:41 ]
- >>896は宣伝でマルチしてるから無視すべし
- 903 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 17:02:57 ]
- PIC等の単純なCPUで機械語でもやってアドレッシングモードを習えば
ポインタは理解出来るんじゃね? 余計に混乱するかな?
- 904 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:50:37 ]
- PICとかアドレッシングモードとかわけわかめなんだけどどうすれば習えるの?
- 905 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 19:33:40 ]
- PICは余計なところが気になりすぎ、16ビット以上推奨だな。
AVRとかHC08とかARMがいいんじゃね? あと、アセンブラのアドレスはせいぜい指してる先のバイト数 の情報くらいしか持ってないから、ポインタまでには、まだまだ 壁があるのでよろしく。
- 906 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 20:47:32 ]
- >>895
おれは構造体を定義したら、必ずその初期化関数を作るけどな。 だからソースはさほど膨らまない。 まあその関数の中でmemsetをやっている場合もあるんだが、 それでも素のmemsetは使わないな。
- 907 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:43:28 ]
- 動的にその行列のサイズが変わる、その平均が100X100から1000X1000近くになって
最悪5千近くなる行列は動的に変わるんで代入じゃ無理だし、ループでまわして初期化するよりはmemset使った方が速度は確保できるし 何が糞なんだかなぁと思うわw まあ、動的に確保して中身をゼロクリアしたいのならcalloc使えって話だけどなw しかし、途中で初期化したくなったらmemsetかな?
- 908 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:09:00 ]
- >>905
> あと、アセンブラのアドレスはせいぜい指してる先のバイト数 > の情報くらいしか持ってないから TRON chip を否定したな!WwwWW
- 909 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:47:17 ]
- >>908
> TRON chip を否定したな!WwwWW は? TRON Chipのポインタも、持ってる情報はアドレスだけですが? ポインタに情報を持たせるのはLisp処理系とかで、ワードアラインの都合で 使わない下2bitに型の情報を入れ込んだりとか、アドレスが24ビットだった 68000用のやっぱりLisp処理系で上8bitに型の情報を入れたり、とか。 ポインタが本格的に(?)型の情報を持ってるアーキテクチャったらIBMの System/38→AS/400とかだろ。
- 910 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:12:54 ]
- >>909
ショボいCPU使ってプログラムを作ると自分でポインタを作って管理しなきゃいけなくなるよ。 それでポインタがマスター出来るだろうと思う。
- 911 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:11:14 ]
- >>907
そういう0クリアする必要があるときのmemsetには、誰も異論を唱えていない。
- 912 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:16:18 ]
- >>907
それやるとどこか1バイトだけ 初期化されず危険というコンパイラもある
- 913 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:24:46 ]
- >>912
「そうする機能を持つ」ということと、「バグでその機能が働かない」というのを ごっちゃにすると、ワケワカンナクなるからやめようぜ。
|

|