C言語のことは漏れらに聞け!!<サンキュー>
■ このスレッドは過去ログ倉庫に格納されています
0001前スレ949
NGNG・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/
・前スレ <38>
http://pc3.2ch.net/test/read.cgi/tech/1035729526/
コンパイラ、過去ログなどのリンクは>>2-5 あたり
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG問題にしているのは、「&hoge[0]」(ポインタ)に付いてではないのか?
いつから、hoge(配列)の話になったんだ?
0235デフォルトの名無しさん
NGNG他にもあるかな?
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG単文だからでは?
このスレの半分以上は前スレの話題を引き継ぐな。
c faq読めよ…。
0238デフォルトの名無しさん
NGNG話にならねー。
0239デフォルトの名無しさん
NGNGたかがelseの前で構文エラーになるかならんかの違いだろ。
個々のコーディングスタイルに依存する話を、
誰でも役に立つと決め付けんな。
むしろ邪魔になることもある。
そういう俺は個人的には使ってるけどな。
0240デフォルトの名無しさん
NGNGint main(int argc, char **argv);
int main(int argc, char *argv[]);
0241デフォルトの名無しさん
NGNGああそうか。仮引数のポインタを[]と書くのも構文糖だね。
ポインタを受ける時は配列を受ける時が多いから。
0242デフォルトの名無しさん
NGNGK&R厨が出てくるぞ。
0243225
NGNG> 問題にしているのは、「&hoge[0]」(ポインタ)に付いてではないのか?
> いつから、hoge(配列)の話になったんだ?
多分お前は話を理解できてないな。
その &hoge[0] が即値とどう関係してくるのかという疑問なんだが。
0244デフォルトの名無しさん
NGNG結局好みでしょ?
オレもこの手の問題は通りぬけたけど
マクロなんか全然使わない。
関数書くのが楽しいからw
0245デフォルトの名無しさん
NGNG実行するまで、hoge が決まらない。
実際、コンパイラは lea を吐くと思う。
0246デフォルトの名無しさん
NGNG最近全然書いてない。
SWAP() 程度の処理なら直書きしてる。型もまちまちだし。
0247231
NGNG>型もまちまちだし
マクロは型に依存しないんだよ?
0248デフォルトの名無しさん
NGNG#define isnullstr(str) (!*(str))
/* 空文字列かどうかを判断 */
strlen(str)==0の代わりに*str==0と書いていたけど、分かりにくいんでマクロにした。
0249デフォルトの名無しさん
NGNGおかげでしょうもないバグが起こる可能性がある。
0250デフォルトの名無しさん
NGNGあのマクロの中で定義している変数はなんだ?(^_^;)
#define SWAP(x,y,type) do{type W;・・・と書けば型によらないで使えるけど
0251247
NGNGいちいち関数つくるよりは、直書きの法がいいけどん、
そんな時くらいしかマクロは使えましぇん!
0252最後に質問
NGNGint main(void)
{
int a[]={0,1,2,3,4};
printf("%d",*a); /*出力結果 0*/
return 0;
}/*なぜアドレスをポインタ変数に代入してないのに、
間接参照演算子、以下(*)が使えるのでしょうか?
*が使えるのはポインタ変数(ポインタ配列)にアドレスが
代入されていて、その変数を指している時にしか
使えないと思うんですが・・・*/
0253デフォルトの名無しさん
NGNGそもそも、a[n]って*(a+n)だぜ。
0254デフォルトの名無しさん
NGNG>>1のリンク先にあるC FAQを読んだ方がいい。
0255デフォルトの名無しさん
NGNGにして置いたら?
紛れが少なくなる。
0256デフォルトの名無しさん
NGNG宣言の時以外に使われる[]、つまり添字演算子は*と書いてもほとんど同じだ。
この辺の話は、もうちょい後でじっくり学べ!
今はとりあえず、配列の名前(この場合だとa)を単独で使うと
それは配列の先頭要素へのポインタ(つまりaは*a[0]ってこと)になる。
ただし、これは嘘だ。でも今はこう覚えといて問題なし。
実際オレもそうだったから。安心しろ
0257デフォルトの名無しさん
NGNGaは*a[0]じゃなくて&a[0]
0258256
NGNG0259デフォルトの名無しさん
NGNGもちろん
0260デフォルトの名無しさん
NGNG死ぬべき立場なら潔く割腹。
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNGそれだけを見るとナイスアイディアに見えるが、その調子で作ったマクロが
ずら〜っと並んでいると読む気がしなくなる罠。
漏れは素直に !*str の方が好き。
この程度、読むのに詰まる事も無いだろうし。
0263デフォルトの名無しさん
NGNG0264256
NGNG僕は調子に乗りました。初心者の僕でもわかりそうな質問だったので
がんばってレスを打ちました。そしたら257にやられました。
向こうは3人がかりで僕を攻めました。お父さん、お母さん、
今までありがとう・・・・
これは自殺じゃない!他殺だ!(某あほな自殺者の迷言)
0265デフォルトの名無しさん
NGNG同感。逆のケースだと特にね。
if(*str) {}
if(!isnullstr(str)) {}
前者の方が断然読みやすく書きやすいと思う。
0266256
NGNGでもマギレって?
マグレか?
だとしたらなんの?
0267デフォルトの名無しさん
NGNG/~ ..:::::::!.,___ ,,..、-、,
/ .::::::::::::::`::::::~~""''''ー-,/~:::::::::.`i,
/ .:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::: i
/ .:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::.. |
,/ :::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::. i
,l' ::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::. |
l ::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::: i 生きるって辛いよな・・・
i, ..:::::●:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::: !
_,,.i ..::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::●:: i'
/~ 'l, ..:::::::::::::::::::::::::::|、;;;;;;;;;;;;;;;;;/::::::::::::::::: ,i' /~\
/,.、-ー 、;i, .::::::::::::::::::::::::::::::| ~"''''"/::::::::::::::::::: /~\ / i.,_
/'/ ..::::::::|::' ., :::::::::::::::::::::::::::::::|'⌒`ヽ,/;:::::::::::::::::: /:::::::.. \ ,i .::.. \
/ i' .::::::::::/:::::::`・、., :::::::::::::::::::::::,人,__,/;;;;;::::::::::::::::/;;;;;;:;:::::.. ヘ / .::::....::::::::. `.,
,i/( .::::::::::::i,::::::::::::;;;;;;~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::-''";;;;;;;;;;;;;;;:::::.. \ / .:::::::::::):::::::::.. ヘ
0268デフォルトの名無しさん
NGNG何やっているのかわかりやすくするためにマクロにしたんだが、駄目か・・・
>>265
空文字列でない(文字列の終わりでない)という条件式は俺も上の方法でやっています。for(;*str;str++);って感じで。
0269デフォルトの名無しさん
NGNG全て知ってます。
聞きたいことが伝わらないですかね?
たとえば、
int a=10;
int *p;
p=&a; /*アドレスを代入し、pがaを指す*/
ココ!
>>256のソースは変数を指していない。
printf("%d",*p);
ココ!指しているから*が使える。
>>256のソースではどこも指していないのに
*が使えるのはなぜですか?と聞いています。
0270デフォルトの名無しさん
NGNGい�`・・・
 ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧ ∧
( ,,)
./ |
(___/
/
0271デフォルトの名無しさん
NGNG配列を確保した時点でアドレスは決まると思うが・・・
0272デフォルトの名無しさん
NGNG> 全て知ってます。
> 聞きたいことが伝わらないですかね?
はあ?
配列がポインタに成り下がることを知っていたら
そんなアホな疑問は出てこないはずだが?
0273デフォルトの名無しさん
NGNGそれでいいじゃん。
マクロは、定数以外には基本的に使わないのが鉄則。
デバッガで追うのも面倒になるし。
0274デフォルトの名無しさん
NGNG0275256
NGNGだから、配列はポインタに変わっちゃうんだってば。
知ってるのにわからないんだったら才能ないんでない?
やめた方がいいと思うよ。
オレは0.2秒で理解した
0276デフォルトの名無しさん
NGNGわかりました・・・
今まで書いたソースを修正するのは面倒だからそれはそのままにして、今後は禁じ手にするか。。
0278デフォルトの名無しさん
NGNGマジレスシル!!正しこれが最後。
まずADSLでネット始めた方が安全だよ。それで電気店に行って対策ソフト
購入シル!店員に説明聞くか説明書読めば大概分かる。次ぎにセキュリティを
「高」にする。さらに心配なら「串」を刺すって方法もある。
サイトはトレンドマイクロを参考にした方がいいな。
メールはフリーで行い自分の活動的な事はネットカフェから作業するベシ!
他の奴の言う事は聞かなくてヨロシイ。
この書き込みに「自演」とか「お前は回線切って死ね」とか色々あると
思うけど素人はその程度なんで。
あっ、お前も分からなければ市ね!さっきは 書き込む所間違えてスマソ(W
0279デフォルトの名無しさん
NGNG> Cを使ってる人間であれば !*str という式が
そうだね。それくらい分かるよね(^_^;)
>>278
Σ( ̄□ ̄;)!!
0280デフォルトの名無しさん
NGNG明後日の方向にレスなさってますか?
0281デフォルトの名無しさん
NGNGワラタ
0282デフォルトの名無しさん
NGNG> 書き込む所間違えてスマソ
今も間違えてるし。
0283256
NGNG村上ショージ氏でつか?
このシュールさは彼としか思えない・・・
0284デフォルトの名無しさん
NGNGちょっとワロタ。けど
お前は回線切って氏ね!
0285デフォルトの名無しさん
NGNGパソオタ(デブ・メガネ)ということで
ファイナル・アンサー
0286デフォルトの名無しさん
NGNG0287256
NGNGオレは武田真治似で、彼女はhiro似で
大学で仕方なく学んで、楽しいなとか思ってる香具師ですが何か?
0288デフォルトの名無しさん
NGNGまあ、キミはデブでもなければヲタでもないけど、
プログラムもできない椰子だけどね。
0289デフォルトの名無しさん
NGNGここですか?
0290デフォルトの名無しさん
NGNG選ばれし者しか使えない。
容姿等を問題にする愚者には一笑分からない。
0291デフォルトの名無しさん
NGNGパソヲタ&デブ&メガネですが何か?
0292256
NGNG0293デフォルトの名無しさん
NGNG> 愚者には一笑
ワラタ
0294デフォルトの名無しさん
NGNG↓死ね
0295デフォルトの名無しさん
NGNGそれはさておき。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG日 本 人 同 士 醜 い 争 い を し て い る の は コ コ で す か
0299デフォルトの名無しさん
NGNG┌──────────────────────―─┐
│ |
│ |
│ /■\ |
│ (´∀`∩) |
│ (つ 丿 |
│ ( ヽノ |
│ し(_) |
│ |
│ Now Onigiring. ... |
│ |
│ |
│ しばらくおにぎりでお待ちください。 |
│ |
└───────────────────────―┘
クールダウンの途中でエラーが発生した場合は、
「無視(I)」 を選択して続行してください。
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG299 コピペで使ってね。
0303デフォルトの名無しさん
NGNG↓ _人
∩ ∧_∧ ノ⌒ 丿
\ヽ_( ) _/ ::(
\_ ノ / :::::::\
∩_ _/ / ( :::::::;;;;;;;)
L_ `ー / / / \_―― ̄ ̄::::::::::\
ヽ | |__/ | ノ ̄ ::::::::::::::::::::::)
| ̄ ̄ ̄\ ノ お前は ( ::::::::::::::;;;;;;;;;;;;ノ
| | ̄「~| ̄( 、 A , )クソでも / ̄――――― ̄ ̄::::::::\
| | | | ∨ ̄∨ ( :::::::::::::::::::::::::::::::::)
し' し' \__::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;ノ
__
>>285 l ̄/. ___
↓ / /. / ___ノ
__/ /_/ /
喰っとけウラー! Y人, ' ',人⌒ヽ、, '
Y⌒ヽ)⌒ヽ、 人,ヽ)人'、, '
へ, --- 、 ノ ̄ ::::::::::::::::::::::)
/ ̄ ̄ ̄ 、____\ ( ::::::::::::::;;;;;;;;;;;;ノ
/ _/ ̄「~|\ __ \ / ̄――――― ̄ ̄::::::::\
| | | | ( 、 A , \ミソ ( :::::::::::::::::::::::::::::::::)
し' し' と∨ ̄∨ \__::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;ノ
0304デフォルトの名無しさん
NGNG2chラーが キ モ イ
↓お前、女いねーだろ・・・そして死ね
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNGはっきりいって一般的にいうパソヲタ(デブメガネアニオタ)にはC言語できないと思われ。
(漏れの周りは死にそうにやせたヤシばっかりだ。。)
0307デフォルトの名無しさん
NGNGイッパイ ツレタ プッ
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG人のコードにゴチャゴチャ言ってくる奴は腐るほどいるが。
意外と真理かもしれん。
0312256
NGNG0313デフォルトの名無しさん
NGNGプロジェクトxに出てる技術者の爺さん達並みに
かっこいいと思うけど。
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNG「キミ、JavaできるならCもできるよね?」
……それはない。
「キミ、CできるならJavaもできるよね?」
……それもない。
0317デフォルトの名無しさん
NGNG中学生が英語の勉強をしてるのを見た小学生が「英語できるんだ、すごい!」
と言ってるようなもの。
0318デフォルトの名無しさん
NGNG間違いなく理解してくれる対象(マシン&コンパイラ、クソなのは除く)があって、
業務ロジックを規格に沿って記述(コーディング)するだけだからねぇ。
キーボード打つのと同じで、慣れでしょ。
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <time.h>
#include <process.h>
#include <conio.h>
void saikoro(int*,int*);
void hangei(void);
int kakekin, motikin=1000,me1,me2;
void main(void)
{
int tyouhan,yosou;
printf("持ち金%d円です。\n",motikin);
while(1)
{
printf("丁か半か予想して、丁なら0、半なら1を入力してください.やめるときは2を入力してください.\n");
scanf("%d ",&yosou);
if(yosou==2)
{
exit(0);
}
printf("掛け金を決めてください.\n");
scanf("%d",&kakekin);
printf("掛け金は、%dです。",kakekin);
getch();
0321デフォルトの名無しさん
NGNGsaikoro(&me1,&me2);
int kekka=(me1+me2) %2;
if(kekka =0)
{
printf("丁です.");
tyouhan=0;
}
else
{
printf("半です.");
tyouhan=1;
}
if(yosou==tyouhan)
{
printf("予想的中です.掛け金分お金が増えます!");
motikin=kakekin+motikin;
}
else
{
printf("はずれです.掛け金没収!");
motikin=motikin-kakekin;
}
0322デフォルトの名無しさん
NGNGbreak;
}
return;
}
void saikoro(int *c,int *d)
{
srand((unsigned)time(NULL));//rand()だけではいつも同じになる
*c=rand()%6+1;
*d=rand()%6+1;
printf("%dと%dです。",*c,*d);
return;
}
で、掛け金を決めてくださいと言う前に、scanf("%d",&kakekin);が動作してしまうのですが、なぜですか?
0323デフォルトの名無しさん
NGNG勘違いじゃないのか?
0325デフォルトの名無しさん
NGNG0327326
NGNG0329デフォルトの名無しさん
NGNGこれからプログラムを学ぼうかと思っているのですが、
初めて学ぶ言語としてC言語はどうでしょうか?
一応、WindowsマシンとボーランドCの無料版はすでに入手してあります。
0330デフォルトの名無しさん
NGNGscanf() はもっと丁寧に扱え。
×: scanf("%d ",&yosou);
○: scanf("%d",&yosou);
■ このスレッドは過去ログ倉庫に格納されています