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


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

C言語なら俺に聞け(入門編)Part 100



1 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/30(金) 21:01:32.89 ]
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 99
toro.2ch.net/test/read.cgi/tech/1331786500/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 156代目
toro.2ch.net/test/read.cgi/tech/1328276597/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/

41 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 21:53:47.78 ]
プログラミングの勉強を始める時に色々オススメの本を教えて頂いた者です。どうしてもお礼が言いたくなり、この場を借りてお礼を言わせて下さい!あの時は本当にありがとうございました!お陰で苦手だった勉強も楽しくなってきました!本当ありがとうございます!

42 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 22:03:41.77 ]
>>41
また困ったことがあればいらっしゃい

43 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 23:24:31.09 ]
可愛いやつだ

44 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 14:08:04.29 ]
qune.cside.com/archives/001941.html

> また,この本は,プログラム内の定数にマクロ定数を使えと言う。今でもそゆ古典的なことを勧めてる人がいるのかと,ちょっとびっくりしたんだけれども,何も知らない子に変なこと教えるなといいたい。

このブログにこんなことが書いてあったのだけど、普通はどうするんでしょうか。


45 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 14:17:02.13 ]
ステマ乙www

46 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 14:28:03.59 ]
>>44
#defineではなく、enumで、数値に名前をつける。constもつかえる

「数値は、マクロではなく定数として定義しよう。Cプログラマは、マジックナンバー
の値を管理するのに伝統的に#defineを使ってきた。しかしCのプリプロセッサは
強力だが乱暴なツール(中略)
CとC++では、整定数をenum文で定義できる。C++では任意の型の定数をconstで
宣言できる。
 const int MAXROW = 24, MAXCOL = 80;


『プログラミング作法』p. 41(ブライアン・W・カーニハン、ロブ・パイク)

47 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 14:28:57.72 ]
>>44
オブジェクトサイズは言語に計算させよう(中略)
2や4ではなく、sizeof(int)
(中略)
 char buf[1024];
 fgets(buf, sizeof(buf), stdin);
バッファサイズは依然としてマジックナンバーだが、宣言に1回登場するだけで
済む」

『プログラミング作法』p. 43(ブライアン・W・カーニハン、ロブ・パイク)

48 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 14:38:17.48 ]
>>46
C++ならいいけど、Cのconstは外部リンケージだから定数には使いにくいっていうか。
配列の要素数とか使えないところもあるし。

49 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 14:47:29.02 ]
>>44
未来から来て、過去の人を笑うのは簡単。
100%バグのないプログラムもない。
人間謙虚でありたいものですね。



50 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 15:11:02.71 ]
> 配列の要素数とか使えないところもあるし。
具体例ほしいなー

51 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 15:30:05.01 ]
>>50
const int TBL_SIZE = 10;

int tbl[TBL_SIZE]; ← エラー

52 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 15:55:08.31 ]
>>51
あー、ごめん
それがエラーになるような実行環境の具体例ね。

53 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 15:59:22.29 ]
マクロはプリプロセッサーだけど
constはコンパイラーオプションだからな

54 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 16:03:23.39 ]
>>52
アホなん?
codepad.org/hAuu0X9H

55 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 16:04:00.48 ]
>>52
バカのくせに上から目線w

56 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 16:05:49.62 ]
>>44
これもC++の仕様と混同してるだけなんじゃないの?

57 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 16:08:25.35 ]
え?
そいつ、C++知らねーんじゃねーの?
今時Cの本もないだろに。

58 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 16:13:34.58 ]
>>54
初めて知ったわ
file scopeだとダメなんだね

59 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 16:14:45.52 ]
>>48にそのまま書いてあるのに、アホなん?



60 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 16:16:30.12 ]
>>57
C++だとマクロよりconstやらinline関数の使用が推奨されてるから、
Cでもそうだと思ってるんじゃないの? >>44 のブログの人。

61 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 16:17:13.73 ]
本 人 乙。

62 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 17:22:08.72 ]
enumハックなつかしいなぁ。

63 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 17:34:19.81 ]
即値やdefineマクロを使わずイミディエイト値を用意するとなると・・・

64 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 18:19:09.30 ]
#define定数をconst定数に書き換えたところで大してありがたみを感じたことって実際ないよな
#defineで普通に問題なく事は進んでいくし

65 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 18:34:48.86 ]
まぁデバッガで見えるのと、括弧をつけたつけないで変なことにならなくて
済むってくりだからね。

66 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 18:42:09.29 ]
C++ での NULLの実装は… 任意なんだっけ?
ほとんど #define でやってるように見受けられるけど

67 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 18:44:18.30 ]
関数のプロトタイプにconst付いてない場合にconst定数を引数で渡すと引数の型が違うとか言って怒られるし
プロトタイプを変更したらconst付けてないのが渡せなくなるしマジうざいんだけど

68 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 19:04:12.36 ]
>>67
なんか違ってないか?

69 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 19:05:06.65 ]
>プロトタイプを変更したらconst付けてないのが渡せなくなるしマジうざいんだけど

こう言う動作だっけ?
もうC++書いてないから忘れたけど
関数の引数でconst宣言するのって
関数内部で参照先の値を変えませんよって言ってるだけじゃなかったっけ?
呼び出し側でパラメーターに非const渡せないとか有るんだけっけ?



70 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 19:08:01.79 ]
ス レ 違 い

71 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 19:14:20.49 ]
プログラミング作法って本当に良書だよなあ
さすがカニチャーハンさん
尊敬しております(^人^)

72 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 19:45:10.03 ]
間違いを突っ込まれるとスレ違いって言い出す人が現れるな。

73 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 19:46:50.63 ]
どこがつっこみだよ。
ろくに知りもしないなら書くなよ。

74 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 19:47:58.77 ]
constは糞でFA

75 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 19:58:05.94 ]
自分がconstの仕様を知らないのをconstが糞だって言ってごまかしてたらいつまでたっても上達できないだろ。


76 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:03:33.16 ]
>>69
メンバ変数を書き変えませんよの const メソッドとごっちゃになってる気配

77 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:06:41.21 ]
単にプロトタイプと定義の両方を同時に変更してないってだけじゃね?

78 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:09:25.50 ]
>>71 鬱になって会社辞めた時、もうプログラムなんてしない
と思って「プログラミング作法」捨てたんだよな。
もったいないことした。

79 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:18:51.51 ]
もうプログラムなんてしないなんて言わないよ絶対〜



80 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:26:02.51 ]
デスマ はじまるよ
ほら また 僕のそばで〜


81 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:29:00.45 ]
こういうのってマヌケがよく書くよな。

82 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:30:43.33 ]
>>71
俺も欝でITは辞めたけど、未だにプログラムは書いてる。
でも辞めた際、結構本捨てたなぁ…

83 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:32:32.62 ]
>>42、43
レス遅くなってすみません。色々あって職を変えることになり、覗く暇がなかったもので^^;
なるべく自分で答えを見つけたいのでどうしても分からなくてどうしようもない時はまたお願いしていいですか?優しい言葉ありがとうございます!


84 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:51:26.12 ]
C++のconstはオブジェクトを値で渡すイメージで使いたい時にとても便利
オブジェクトを実際に値で渡すとスタックを大きく消費するしそのたびにコンストラクターや
コピー演算子が呼ばれてしまうが、constを付けることでオブジェクトのアドレスをスタックにコピーするだけですむのだ
関数内部でオブジェクトが変更されないことが保証されているので、
呼び出し側はあたかも引数に渡したオブジェクトをプリミティブ型のように扱うことが出来る。
いわゆる近代的な言語で設計されているStringオブジェクトやIntegerオブジェクトのようなプリミティブ型を
具象化したクラスが、非コンストメンバーを持たないことで、プリミティブ型のような動作を
するのはとても興味深い。このような動作をさせるのにコンスタントオブジェクトという考え方はとても重要である。

85 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:52:28.25 ]
何アホなこといってんだコイツ
脳みそにウジでも湧いてんのか
Cのconst語れよ低能


86 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:52:37.75 ]
>>84
C++スレでやれ

87 名前: ◆QZaw55cn4c mailto:sage [2012/04/02(月) 20:55:39.04 ]
>>84
それは const とともに & も必要じゃないかい?

88 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 21:06:38.15 ]
まだC言語スレでC++を語る馬鹿がいたのか

89 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 22:06:32.90 ]
つかC99で可変長配列おkになったよね?
なんか>>51とか>>54で不安になって確認しなおしちゃったよ



90 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:19:32.91 ]
C99でもダメじゃないのか?

91 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:26:18.32 ]
C99では、配列宣言時には要素数に変数も使えるんじゃなかったか?
真の意味の可変長配列(スコープの途中で要素数を変更したりできるもの)ではないけど…

92 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:28:24.90 ]
>>90
privatepaste.com/bfbce325f4

93 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:29:25.42 ]
>>91
そう、それのこと

94 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:29:40.12 ]
>>87
珍しくあってる。

95 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:31:26.78 ]
>>92
いや、>>54の話。

96 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:49:10.90 ]
ああ、ファイルスコープか

97 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 09:39:40.06 ]
>>92
これ、ちゃんと最適化されて静的配列になるのかね。
ヘッダーファイルで#define のかわりにconst使うとすると、
static const int n = 100;
とか
extern const int n;
とかしないといけないじゃん。
下のようにすると最適化は不可能だよね。
C99のお作法的にはどうするのが正解なんだろ。

98 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/03(火) 12:44:57.53 ]
>>97
処理系によって、状況によって最適化されるよ。
VC や gcc は翻訳単位をまたぐ最適化もできる。

99 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 14:27:30.29 ]
C言語で2Dゲーム作るのにDXライブラリーより簡単なライブラリーってある?



100 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 14:43:57.68 ]
>>99
ncurses

101 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 16:31:09.98 ]
ncursesだとnethackくらいが限界かと思う。

102 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 17:11:32.51 ]
つくーるでつくれ。

103 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 22:35:34.42 ]
うん

104 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 23:02:56.88 ]
猫でもわかるってサイト一通り見たんだけど、次何やればいい?
サイトとか教えて

105 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 23:04:46.23 ]
              「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得
                                ↓
     「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
                                ↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
                                ↓
      「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
                                ↓
           「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
                                ↓
        「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
                                ↓
                              神の誕生


106 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 23:18:51.30 ]
英語で言う文法みたいな感覚は理解できたけど、そこから先が・・・orz

107 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 23:23:43.29 ]
やろうとしていることをプログラミング言語以前に母語で説明できない奴はプログラマに向いてないってダイクストラが言ってた。

108 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 23:29:21.26 ]
だいたい分かるだろw


109 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/04(水) 00:17:35.18 ]
天才の9割は左利き



110 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:22:45.74 ]
というかB型が圧倒的に多い、経験則だが。
組み込み系なら一層ね。


111 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:23:40.87 ]
まず作りたいものがあってその実現の為に必要な知識を身に付けるという流れが正しいのであって
ただ盲目的に知識だけ身に付けてもそれで何か勝手に生み出されるかっていうとそういうわけではないよね

112 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:52:23.09 ]
デタラメに仕入れたはずの知識が線で結ばれることがある
オートマトンとかグラフとか、汎用性が高いと信じられているものと
それに付随するアルゴリズムは、知っておくだけでも有益

113 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 18:51:50.32 ]
ポインタについて質問させて下さい。
いま、あるメモリ上にint型の領域をおき
int*型ポインタ変数ip3にそのアドレスを、
int**型ポインタ変数ip2にip3のアドレスを、
int***型ポインタ変数ip1にip2のアドレスを入れ、
ip1から辿って***ip1でint型の値を得られるようにすることを考えます。すなわち、
ip1→ip2→ip3→int型の値
のような形にしたいという事です。それで以下のようなコードを書いたのですが
int ***ip1, **ip2, *ip3;
ip3 = malloc(sizeof(int));
*ip3 = 2;
ip2 = malloc(sizeof(void*));
*ip2 = ip3;
ip1 = malloc(sizeof(void*));
*ip1 = ip2;
printf("%d",***ip1);
これだと型宣言の時点において、int型の値との間に挟まれているポインタの数に応じて、*の数を静的に決めなければなりません。
最終的にint型の値を取り出す際には、*の数を指定してやらなければならないと思いますが、
ip1, ip2, ip3はその仲立ちに過ぎないのですから、「int型からポインタ何個分離れているか」はドントケアで良いはずです。
このような場合、そのように定義するのが適切でしょうか?
ip1,ip2,ip3をvoid*で定義しようとしたらエラーが出ました。

114 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 18:54:18.96 ]
訂正です。
×そのように定義するのが適切でしょうか?
○どのように定義するのが適切でしょうか?

115 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/04(水) 18:54:36.28 ]
そもそもの設計が間違ってる。

116 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 19:17:36.35 ]
テメーの手に余ることを設計しても
手のつけられないゴミカスが出来上がる
お前がアホなうちは
そんなクソをこの世に生み出すのは

やめ☆とけ


117 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 19:26:24.22 ]
>>113
void *ip3;
ip3 = malloc(sizeof(int));
*ip3 = 2;
これがエラーになる理由を考えよう。

118 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 19:47:02.18 ]
>>113
void *で宣言して使う時にキャストすりゃできるけどさぁ…

ip1とip2のmallocはいらないだろw

119 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 19:48:37.64 ]
>>113
> 「int型からポインタ何個分離れているか」はドントケア
うんうん、ドントケアだよドントケア。
そんなこと考えないからね。



120 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 19:56:20.53 ]
専用のmalloc/freeを作るところから始めようじゃないか
*int malloc_i2(int**);void free(int**)
**int malloc_i3(int**);void free(int***);

121 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:05:14.41 ]
ip1→ip2→ip3→int型の値
ここだけ抜き取ってみると線形リストでことたりるんじゃね? と思ってしまう

122 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:16:38.57 ]
>>113
よくわからんが、やりたい事は↓のようなことじゃないか?

int *pi, **ppi, ***pppi;

// int用領域確保
pi = malloc(sizeof(int));

// intの値設定
*pi = 2;

ppi = π
pppi = &ppi;

printf("%d\n", ***pppi);

123 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:18:14.92 ]
>>122

ppi = π
って右辺は化けている。

化けないようにアンパサンドを全角で書くけど。
ppi = π

です。

124 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:29:39.70 ]
化けてないでござる

125 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:31:20.86 ]
jane style と firefox じゃあ
モロにギリシャアルファベットのパイになってる


126 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 23:49:01.63 ]
>>122

アンパ **;ってHTMLの特殊文字の書き方だったのを思い出して、
下記のように書き換えました。

int i, *pi, **ppi, ***pppi;

// int 値設定
i = 2;

// 各ポインタ設定
pi = &i;
ppi = π
pppi = &ppi;

printf("%d\n", ***pppi);

127 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 00:03:37.86 ]
構造体を使えば済む話だろ、どうせ。

128 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 00:59:15.58 ]
エロイ人〜教えてー
mallocとかでメモリ確保するのに実メモリサイズ以上の
メモリ取ろうとしたい場合ってどうすりゃいいの?
例えば、PCに8GBの実メモリ積んでて、10GBのメモリを確保したい時とか。
仮想メモリとか、実メモリで説明してくれ。
ダメなら、どういうエラー処理すればいいのかもよろしく。

129 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:01:24.20 ]
>>128
設計見直して、実メモリ内で収まるようにする。



130 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:02:20.31 ]
メモリマップドファイル使え
以上。

131 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:11:18.41 ]
>>130
kwsk

132 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:17:07.11 ]
>>131
ggrks

133 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:17:39.17 ]
>>131
環境依存だ
mmap でもググってろ

134 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:22:55.02 ]
さんきゅー ぐぐってみるゎ!

135 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 02:08:13.69 ]
標準関数と同じ結果を返す自作関数(strlenやstrcpy)を作成してみたのですが、
パフォーマンスが大きく異なるのですが一体何が原因なのでしょうか?
以下strlenの自作関数strlen2

int strlen2(char *Buff){
  int i=0;
  while(Buff[i]!='\0'){
    ++i;
  }
  return i;
}

136 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 02:09:36.35 ]
最適化

137 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 02:25:26.40 ]
>>136
具体的にどのようなコードにすればよいのでしょうか?

138 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 02:31:16.56 ]
>>135
Cの標準ライブラリ関数は非常によく使われるので、
実装がチューニングしてある事も多い
内部でSSEのような拡張命令を使ってたりね

あと、コンパイラが標準ライブラリ関数を検出して、
インライン展開などの最適化をかけている事がある

139 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 03:00:50.03 ]
>>128
PCがWindowsマシンをさしているのなら、実メモリサイズの制限は受けないよ。



140 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 05:08:07.80 ]
>>113に答えて頂いた方々ありがとうございます。
線形リストをやりたいのではなく、ポインタを使ってアクロバットな事をやればポインタへの理解が深まるかなぁと思ったのですが・・・どうもトンチンカンな事をしていたようです。
ip1とip2のmallocは確かに要りませんでした。ip1 = &ip2;で良かったですね。

141 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 05:40:27.35 ]
void *にキャストされたポインタは、元のポインタに戻すことができると決まっているけれど、
元の型がわからないから、そういうのを構造体に持たせて、線形リストにしてはどうかという提案だと思っていたよ。

いかにもめんどくさそうでしょ。でもポインタへの理解を深める目的だったらやってみてもいいんじゃないの。






[ 続きを読む ] / [ 携帯版 ]

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

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