[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 19:54 / Filesize : 171 KB / Number-of Response : 914
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ポインタはどうやって学ぶべきか



1 名前:デフォルトの名無しさん [2007/10/24(水) 04:07:56 ]
なんと!意外にもスレが無かったので立ててみました

先日のソフトウェア開発技術者試験午後UのB木のポインタ表現
近年の基本情報技術者試験の午後C言語問題の自己参照構造体
など物凄く出来が悪いです。

ゆとり?文系?自作減少?
ブラックボックス化されてメモリ管理やコンピュータの細かい知識が不要となった?

本当にポインターは必要なのか!?議論しましょう

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
「そうする機能を持つ」ということと、「バグでその機能が働かない」というのを
ごっちゃにすると、ワケワカンナクなるからやめようぜ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<171KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef