トップページ⇒tech
1001コメント282KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/02/04(土) 03:01:40.24
C言語の*入門者*向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 95
http://toro.2ch.net/test/read.cgi/tech/1326459906/
★過去スレ
http://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代目
http://toro.2ch.net/test/read.cgi/tech/1328276597/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0655デフォルトの名無しさん2012/02/11(土) 01:11:19.31
ちゃれーくそやろーには教えたくない
0656デフォルトの名無しさん2012/02/11(土) 01:13:30.41
>>645

>>654
>友達のいない講義では周りの人にきいて
0657デフォルトの名無しさん2012/02/11(土) 01:14:21.43
押忍!お忙しいところ申し訳ございません!
自分、少々質問致したい事があるのですが、お時間頂けないでしょうか!

みたいに聞け。
0658デフォルトの名無しさん2012/02/11(土) 01:14:30.73
超えられない壁などない
なぜなら無限の高さの壁はないからである
0659デフォルトの名無しさん2012/02/11(土) 01:15:23.01
>>657
>押忍!
>自分、
をカットすれば、まあ及第点
0660デフォルトの名無しさん2012/02/11(土) 01:15:30.96
バカの壁は越えられない。
0661デフォルトの名無しさん2012/02/11(土) 01:17:53.09
「何をしようが64kbの壁は超えられない」って何?
mallocで2MB確保してますが何か?とかそういう話ではなくて?
0662デフォルトの名無しさん2012/02/11(土) 01:19:59.94
昔話だよ。
意味はない。
0663デフォルトの名無しさん2012/02/11(土) 01:20:28.30
ふと本棚みたらマイクロソフトマクロアッセンブラーv6.0 PC-9800シリーズの
プログラマーズガイドとリファレンスが見つかったんだけど
これってヤフオク出したら高く売れるかな?
ここの奴らなら欲しい奴いるだろ?

最近のC++ライブラリィーのガイドとかに比べれば遙かに簡単に(短時間で)読破できるぞ
0664デフォルトの名無しさん2012/02/11(土) 01:20:33.22
今ならあれだ、どうやって4GB以上のメモリを確保しますかって話だ。
0665デフォルトの名無しさん2012/02/11(土) 01:21:10.51
昔話でここまで伸びた
0666デフォルトの名無しさん2012/02/11(土) 01:21:23.37
free(buf);しないメモリリーカーがいるスレはここですか?
0667デフォルトの名無しさん2012/02/11(土) 01:21:44.82
>>666
3点。
0668デフォルトの名無しさん2012/02/11(土) 01:22:07.19
>>663
ブックオフで10円。
0669デフォルトの名無しさん2012/02/11(土) 01:22:55.66
そう言えば64bitプログラムってどんなメモリーモデルになるの?
Win64はなんかまたセグメント復活みたいなのを聞いた気がするけど
0670デフォルトの名無しさん2012/02/11(土) 01:24:07.40
俺の本棚にはM68000のユーザーズマニュアルがささってる。
0671デフォルトの名無しさん2012/02/11(土) 01:25:14.37
>>667
あえて33分の1しちゃうなんてドSなんだから(はぁと
0672デフォルトの名無しさん2012/02/11(土) 01:25:26.53
>>670
薄めの青枠でテカったやつだっけ?大学の講義で使ったな。
0673デフォルトの名無しさん2012/02/11(土) 01:28:10.66
calloc使ってるやつはゆとり
0674デフォルトの名無しさん2012/02/11(土) 01:28:43.25
昔は恐竜とかいてヤバかったよね、どうやって身を守る? とかそういう話?
0675デフォルトの名無しさん2012/02/11(土) 01:28:54.43
ゆとりはCなんて使わんだろ。
0676デフォルトの名無しさん2012/02/11(土) 01:29:35.60
>>674
>>664
0677デフォルトの名無しさん2012/02/11(土) 01:29:43.28
ゆとり言語ってなに?
0678デフォルトの名無しさん2012/02/11(土) 01:32:05.91
Javaだろ。
0679デフォルトの名無しさん2012/02/11(土) 01:32:35.52
Javaが入るならC#も入るな
0680デフォルトの名無しさん2012/02/11(土) 01:33:38.71
>>672
そうそう。CQ出版のやつ。
俺の脳内アーキテクチャはいまだにこれ。
0681デフォルトの名無しさん2012/02/11(土) 01:37:58.53
もう昔すぎて覚えてないわw
68020って別だっけ?アドレッシングモードが多くてCそのままアセンブラ書ける
やんけって感動したのは覚えてるw
0682デフォルトの名無しさん2012/02/11(土) 01:38:47.60
ん?インラインアセンブラのこと言ってる?
0683デフォルトの名無しさん2012/02/11(土) 01:39:40.50
いや、アセンブラ。
Cで書くくらい簡単にかけた。
0684デフォルトの名無しさん2012/02/11(土) 01:41:51.31
汎用のレジスタが沢山あるしメモリはリニアだし、
link/unlinkでスタックフレームつくったりとか高級言語っぽい。
なので86系とか難しすぎて無理。
0685デフォルトの名無しさん2012/02/11(土) 01:43:26.07
まぁそれも死に行く運命だったのだよね。
0686デフォルトの名無しさん2012/02/11(土) 01:44:59.43
まあ簡単に言えばマカだったんだよね俺、昔は。
0687デフォルトの名無しさん2012/02/11(土) 01:46:16.97
あれ、すごく夜にいいよね。
0688デフォルトの名無しさん2012/02/11(土) 01:53:10.19
インダイレクトアドレッシングを理解していれば、ポインター概念は既に理解済みと言える、くらいの昔話か。
0689デフォルトの名無しさん2012/02/11(土) 01:55:26.36
ちょっと何が言いたいのかわからない。
0690デフォルトの名無しさん2012/02/11(土) 01:55:31.06
ゆとーりがC使わないのはポインタが理解できないから?
0691デフォルトの名無しさん2012/02/11(土) 01:59:33.47
大学の授業がJavaだから。
0692デフォルトの名無しさん2012/02/11(土) 01:59:51.74
Javaってなんでゆとり言語なん?
0693デフォルトの名無しさん2012/02/11(土) 02:00:08.37
>>438
2の乗数で一桁切り捨て
どんな場面で使うんだろう?
0694デフォルトの名無しさん2012/02/11(土) 02:01:48.35
>>690
Joel on Software ジョエル・オン・ソフトウェア
ttp://japanese.joelonsoftware.com/Articles/Interviewing.html
0695デフォルトの名無しさん2012/02/11(土) 02:01:49.91
>>692
ゆとりが使うから。
0696デフォルトの名無しさん2012/02/11(土) 02:04:01.52
>>692
Cのポインターとメモリ管理に挫折したプログラマー(世界の殆ど)を救うべく設計された言語!!
.....のはずだった。
0697デフォルトの名無しさん2012/02/11(土) 02:04:03.75
まぁ、Java見下してるやつは大概Java使いこなせてないけどな
0698デフォルトの名無しさん2012/02/11(土) 02:04:46.09
>>696
…のはずだった????
0699デフォルトの名無しさん2012/02/11(土) 02:22:40.08
すれち
0700デフォルトの名無しさん2012/02/11(土) 03:49:11.46
>>557
市販の高級時計は、ずれない高級時計と、ずれる高級時計に分類されるわけだけど
0701デフォルトの名無しさん2012/02/11(土) 04:16:03.08
ヘ ボ
0702 ◆QZaw55cn4c 2012/02/11(土) 05:40:34.07
>>661
MS-DOS の時代(16ビットコード)の昔話ね。今はまったく関係ない。
でも今でもわかっていない人がいるみたい。
0703 ◆QZaw55cn4c 2012/02/11(土) 05:42:16.34
>>653
>> DS!=SS 問題をご存知ない?DLL 書くときに苦労しませんでしたか?
> 全然苦労しない。
そう‥‥‥、やっぱりみんなあこぎなことしてたんんだ‥‥‥。
0704デフォルトの名無しさん2012/02/11(土) 08:22:23.30
例
void minmax(float** min, float** max, float* a, float* b)
{
if(*a>=*b) {
*max = a;
*min = b;
} else {
*max = b;
*min = a;
}
}

問題
minmidmax(float** min, float** mid, float** max, float* a, float* b float* c)
を最高に高速な方法で書け
0705デフォルトの名無しさん2012/02/11(土) 08:26:36.11
例の時点でバグってるが。
速度を気にする関数で引数をポインタにするのはヘボ。
0706デフォルトの名無しさん2012/02/11(土) 08:40:43.96
と思ったらダブルポインタか。
なんだその仕様。
0707デフォルトの名無しさん2012/02/11(土) 08:54:43.65
>>706
自分が勝手に誤解して、仕様に文句つけてる馬鹿にしか見えない。
0708デフォルトの名無しさん2012/02/11(土) 08:56:17.05
連投自己分析乙
0709デフォルトの名無しさん2012/02/11(土) 08:57:51.20
QZって無職なの?
0710デフォルトの名無しさん2012/02/11(土) 09:02:04.73
>>707
いや、>>705はそのままだが。
速度気にするところでポインタ使ってる時点でクソなのは決定だろ。
しかもfloat*。
0711デフォルトの名無しさん2012/02/11(土) 09:04:04.96
どういう経緯でその仕様になったかも知らずに、決定とか言ってる奴は馬鹿。
0712デフォルトの名無しさん2012/02/11(土) 09:05:35.19
じゃぁ経緯を言ってみろよ。
どうせ大馬鹿な話なんだろ?
07137042012/02/11(土) 09:22:45.40
おまえら相変わらずアスペルガーみたいな所にこだわるな。知障に説明してる気分だわ。

じゃあ704の例は忘れろ。悪かったな混乱させて。
例
float min(float a, float b) { if(a <= b) return a; else return b };
float max(float a, float b) { if(a >= b) return a; else return b };

問題
float min(float a, float b, flaot c)
float mid(float a, float b, flaot c)
float max(float a, float b, flaot c)
この3関数を連続して実行した場合と同様の結果を得られる方法を、最高に高速に書け。
0714デフォルトの名無しさん2012/02/11(土) 09:25:21.54
問題の体をなしてないな。
0715デフォルトの名無しさん2012/02/11(土) 09:26:11.10
>>713
最高に高速とか、池沼みたいなこと言うのやめればいいんじゃなイカ?
0716デフォルトの名無しさん2012/02/11(土) 09:28:22.54
QZって無職なの?
0717デフォルトの名無しさん2012/02/11(土) 09:30:51.23
なんで命令口調なの?
口の聞き方ってもんを知らないの?
0718デフォルトの名無しさん2012/02/11(土) 09:36:42.82
坊やだからさ。
07197042012/02/11(土) 09:39:39.12
>>717
おまえらが高速なコードぽんぽん書ける連中なら敬語使ってやるよ。
いまのところおまえらは口先だけの使えないゴミって認定だからな。俺の中で。
0720デフォルトの名無しさん2012/02/11(土) 09:40:39.60
と、ゴミ以下がほざいております。
0721デフォルトの名無しさん2012/02/11(土) 09:41:50.90
>>719
よく分かってるじゃないか!
分かってるならうせろクズ
0722デフォルトの名無しさん2012/02/11(土) 09:45:15.67
はい、自分の仕事は自分でしましょうね。
0723デフォルトの名無しさん2012/02/11(土) 09:47:38.42
高速にしたいならSSE使えばいいのに。
今時SSE使えない環境なんか気にしないでしょ?
0724デフォルトの名無しさん2012/02/11(土) 10:19:15.65
で、QZって無職なの?
0725デフォルトの名無しさん2012/02/11(土) 10:33:53.54
>>703
まとめると、お前には超えられなかった壁という事だ。バカは引っ込んでろ。
0726デフォルトの名無しさん2012/02/11(土) 10:46:40.98
>>712
>じゃぁ経緯を言ってみろよ。

想像通りな馬鹿反応。
0727デフォルトの名無しさん2012/02/11(土) 10:48:42.16
などと意味不明な供述をしており
0728デフォルトの名無しさん2012/02/11(土) 10:57:33.36
馬鹿には、意味不明なんだ… (w
0729デフォルトの名無しさん2012/02/11(土) 11:01:56.78
かわいそうに、よっぽど馬鹿馬鹿言われてるんだろうな。
0730デフォルトの名無しさん2012/02/11(土) 11:21:54.25
とても単純な質問なのですが、、下記のソースでポインタ変数pのアドレスを
他のポインタ変数ppで保持したいとき、**ppではなく*ppで受けることはできないのでしょうか?

<ダブルポインタを使う>
int *p;
int **pp;

pp = &p;

↓

<ポインタを使う>
int *p, *pp;

pp = &p;

0731デフォルトの名無しさん2012/02/11(土) 11:24:34.01
>>730
キャストすれば代入はできる
でも型情報を捨てるメリットはほとんどない
0732デフォルトの名無しさん2012/02/11(土) 11:27:12.58
>>731
キャストが必要ということは、ポインタ変数のアドレスを保持するためには
やはりダブルポインタでないといけないということでしょうか?

ポインタ変数とて、結局ただの変数なので、ポインタ変数のアドレスも、
通常の変数のアドレスと何ら変わらないはず。
だったら、一段(?)の*ppで*pのアドレス保持ができてよいのになと
思った次第です。
0733デフォルトの名無しさん2012/02/11(土) 11:30:12.54
そんな時のためのvoid
void *pp = &p
0734デフォルトの名無しさん2012/02/11(土) 11:31:25.14
>>732
できるけど意味ないよって書いたつもり
0735デフォルトの名無しさん2012/02/11(土) 11:32:10.76
>>733
void型ですか。。

いまいち、キャストすればいけるという意味がわかってないのですが、
ソースで書くと下記のようにしないといけないということでしょうか?

int *pp = (int *)&p;
0736デフォルトの名無しさん2012/02/11(土) 11:32:57.24
>>729
>>729
0737デフォルトの名無しさん2012/02/11(土) 11:33:19.84
int *とは違うものを入れてるんだから当然だろ。
voidで何の問題があるんだ。
0738デフォルトの名無しさん2012/02/11(土) 11:35:02.51
>>737
int i;
int *p, *pp;

pp = &p;

というコードがあったとして、&iの&pの値は同じアドレスでも、
型は違うのでしょうか?
0739デフォルトの名無しさん2012/02/11(土) 11:35:11.88
>>730
typedef int * pint;

int *p;
pint *pp;

pp = &p;
0740デフォルトの名無しさん2012/02/11(土) 11:35:43.67
>>737
void型変数というものを初めて見たので戸惑ったのですが、
そう言う書き方もあるのですね。
0741デフォルトの名無しさん2012/02/11(土) 11:37:26.42
>>730
エスパーしてみる

Cでは
void foo(int& *p) {...}
てのはできないから
void foo(int **pp) {
int *p = *pp;
}
とキャストしてやれば
呼び出し元と同じように扱える
0742デフォルトの名無しさん2012/02/11(土) 11:37:52.54
>>739
(int *)型の*ppを作っているということですよね?
つまり、結局ダブルポインタにするしかないということでしょうか?
なぜそうなのか、いまいちなっとくできなく困っています。
0743デフォルトの名無しさん2012/02/11(土) 11:37:58.92
型情報がいらないならBかアセンブリでも使えよ。
型情報の意義を理解していない初心者か?
0744デフォルトの名無しさん2012/02/11(土) 11:38:52.13
Bなんて使ったこともないくせによく言うな。
0745 ◆QZaw55cn4c 2012/02/11(土) 11:41:32.62
>>725
誰がやっても超えられないですねえ。馬鹿はどっち?
0746デフォルトの名無しさん2012/02/11(土) 11:41:35.83
>>741のレスを見て何となくわかってきたのですが、
>>738の質問の答えがわかれば、それが確信に変わる
気がします
0747 ◆QZaw55cn4c 2012/02/11(土) 11:42:34.85
>>740
つ qsort()
0748デフォルトの名無しさん2012/02/11(土) 11:42:35.54
>>743
ありますが、何か?
0749デフォルトの名無しさん2012/02/11(土) 11:44:14.96
>>746
int *p,*q,n=0;
p=q=&n;
としたとき
&p と &q はイコールじゃないから。
0750デフォルトの名無しさん2012/02/11(土) 11:44:21.08
>>745
お前だということには誰も異論はない。
0751デフォルトの名無しさん2012/02/11(土) 11:44:35.11
>>745
超えられないバカは引っ込んでな。
0752デフォルトの名無しさん2012/02/11(土) 11:47:23.22
>>746
えぇ?
おれには>>741のどこにキャストがあるのかがわからないんだが。
07537302012/02/11(土) 11:47:42.26
>>738の質問が、よく読んだら意味不明なので書き直しますw

int i;
int *p, *pp;

pp = &i; // こっちは問題なし
pp = &p; // こっちはダメ(だけど理由がわからない)

&iと&pは両方ともアドレス値(もちろん違う変数なのでアドレス値自体は違う)
であるから、通常のアドレス変数*ppで受けられるんじゃないの?と思ってしまう

でも実際にはダメ。

その理由は、&iと&pは同じアドレス値であっても、型が違うということでしょうか?
アドレスの型と言うものも、いまいちわからないポイントです。。
0754デフォルトの名無しさん2012/02/11(土) 11:48:04.79
ダメなのは型が違うから。
■ このスレッドは過去ログ倉庫に格納されています