C言語なら俺に聞け 141 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/07/17(月) 21:06:47.63ID:J4JGo3XO
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


http://mevius.2ch.net/test/read.cgi/tech/1494508803/
http://www.geocities.jp/c_cpp_cs/about_c/
2017/08/06(日) 19:52:07.02ID:OFkcQ32C
>>662
>>661 にそんなことは書かれているのか?
2017/08/06(日) 19:55:39.33ID:zQpO4a2U
そういやシンタックスシュガーと言えば、昔々こんなのが動いたのを初めて見た時は驚いたな。
https://paiza.io/projects/XOWJRDaMZQIIu9cF5Ex1Ug
本当にポインタ計算してるだけという。
2017/08/06(日) 20:53:33.24ID:r2XWWSNC
>>659
ガイジには読み取れなかったようだ
> When an array name appears as an argument to a function, the location
of the beginning of the array"s passed;

良い時代になったもんだ 歴史的資料がきちんと公開されている
2017/08/06(日) 21:33:36.77ID:r2XWWSNC
誤読される可能性があるので追記
>>659
ガイジのID:ThMEkv3Iには読み取れなかったようだ
> When an array name appears as an argument to a function, the location
of the beginning of the array"s passed;

良い時代になったもんだ 歴史的資料がきちんと公開されている
2017/08/06(日) 21:39:44.09ID:r2XWWSNC
>>654
ポインタ渡し w
謎用語を躊躇いなく使っちゃう ガイジの特徴だよなあ
2017/08/06(日) 22:38:49.98ID:fAxfwMN0
When an array name appears as an argument to a function, the location
of the beginning of the array"s passed;

「配列の名前が関数の実引数として現れた時、その配列の先頭ポインタが渡される」でいい?
2017/08/06(日) 22:53:31.79ID:r2XWWSNC
どこにポインタなんて書いてあるんだ 見えないものが見えちゃうって精神科受診した方が良いぞ
2017/08/06(日) 22:57:19.94ID:fAxfwMN0
じゃあ君ならlocationはどう訳す?
2017/08/06(日) 23:15:47.82ID:jhhg/GBw
ポインタ渡しが謎用語らしい
コイツはもう覚える気すらないよ
つーかただのバカ
スルー推薦
2017/08/06(日) 23:17:56.61ID:r2XWWSNC
位置

そもそも
> A pointer is a variable that contains the address of another variable.
と言う定義を理解してないのか?
障害児製造機な入門書が存在らしいな
お前は何という本を初学時に使った?
2017/08/06(日) 23:20:53.44ID:UjkuucW3
一応言っとくけど、文字列リテラルを関数に渡す場合の説明は5.5章だぞ
2017/08/06(日) 23:22:53.35ID:r2XWWSNC
>>671
ガイジ用語か qiitaでいっぱいヒットするわ w
2017/08/06(日) 23:25:55.10ID:fAxfwMN0
>>672
直訳すると、「ポインタとは他の変数の位置を内包した変数である」。
"location of the beginning of the array"、直訳すると「配列の先頭の位置」はポインタ以外の何物だっていうのか教えてくれる?

ちなみに俺の初学本は「C言語によるプログラミング」第二版
2017/08/06(日) 23:25:56.83ID:AvyyeWcb
他人をガイジ呼ばわりしてるけど自分が1番ガイジだったってオチやね
2017/08/06(日) 23:38:53.59ID:fp1GLRR7
メモリ上の位置を表す「アドレス」と、それを格納する変数である「ポインタ」を混同してるから議論が噛み合わないのでは?
2017/08/06(日) 23:45:57.68ID:r2XWWSNC
>>675
ガイジか?
ポインタとは他の変数のアドレスを内包した変数である
としか書いてないのに、書かれてない「位置」がなぜ出てくる

まあ、それには目をつぶって
「内包した変数」が重要
Cの変数とは型を持ち、値を格納できるもの

アドレスとポインタ(=変数)を混同しないように
あと10年くらい修行することだ
2017/08/06(日) 23:45:58.32ID:fAxfwMN0
いうほど混同しているだろうか?
2017/08/06(日) 23:54:22.39ID:fAxfwMN0
>>678
えーともしかして、
「いわゆる『ポインタ渡し』ではアドレスがコピーされているのであってポインタ変数が渡されているわけではない」と言いたいの?
2017/08/06(日) 23:55:35.62ID:jhhg/GBw
コイツはまともな社会生活できてるのか
日常会話が成立出来ていないのではないか
2017/08/07(月) 00:00:10.79ID:Uo4tfgNR
>>680
ガイジ用語使うな
qiitaでヒットするそれはあえて言うなら「ポインタ渡され」
このスレで出現している「ポインタ渡し」はガイジID:jhhg/GBwが使い出した謎用語
2017/08/07(月) 00:02:00.78ID:bwSM+rxU
論点を三行でまとめて
2017/08/07(月) 00:07:08.67ID:r7C/NYo5
>>682
いわゆるって言ったのにそれでもダメか。

void foo(int a[8])と宣言された関数を別の関数内で

int a[8];
void foo(a)

と呼び出す時、それはポインタが渡されているのではなく配列の先頭アドレスがコピーされていると言いたいの?
2017/08/07(月) 00:09:51.87ID:uOfJK7yi
「ポインタ」って用語は結構仕様書中でも不安定だから、実はあまり気にしてもしょうがなかったりするんだよね
http://www.kijineko.co.jp/node/498
2017/08/07(月) 00:11:41.88ID:g8RW1Chx
>>684
foo(a) の 「a」って何?
2017/08/07(月) 00:13:35.75ID:r7C/NYo5
>>686
その上にint a[8];って書いたんだけど、なんか文法ミスってたかいな?
2017/08/07(月) 00:13:38.80ID:5EiEWIq+
このガイジ早く死刑にしろ
絶対何か障害持ってるだろ
何か起こしてからじゃ遅いぞ
2017/08/07(月) 00:16:29.93ID:DdwwpY1/
なるほど。やたらガイジ連呼してる奴が頭おかしいわけだな。
2017/08/07(月) 00:21:20.30ID:Uo4tfgNR
>>684
渡されるのはポインタ変数の値(アドレス)、それをfooがポインタ変数として受け取る
2017/08/07(月) 00:24:46.95ID:DdwwpY1/
ポインタの使い道を聞いてるのに、なにみんなで必死にポインタの解説してんだ?

Javaとかポインタない言語があるんだからポインタはなくてもいいだろという主旨だろう。
2017/08/07(月) 00:25:52.66ID:Uo4tfgNR
ガイジ用語「ポインタ渡し」を編み出したID:jhhg/GBwは今日はID:5EiEWIq+か
2017/08/07(月) 00:33:24.20ID:r7C/NYo5
>>690
だよねえ。それじゃあ
printf("Hello, C world!\n");はポインタとして受け取っているように見えるんだけど、ポインタではないの?
2017/08/07(月) 00:38:54.27ID:YE/9ro9h
引数を変数だと考えるからおかしなことになる
引数は値であって変数ではない、渡しているのは値であって変数ではない
C言語には値渡ししか存在しない、他の言語で言う参照渡しに相当するようなものは存在しない
ましてやポインタ渡しに至っては全く意味不明
渡しているのはアドレスであってポインタを渡しているのではない
2017/08/07(月) 00:43:09.37ID:CdxYgk48
ポインタ渡されww
2017/08/07(月) 00:46:39.34ID:r7C/NYo5
じゃあ「アドレス渡し」ならいいわけ?
2017/08/07(月) 00:48:53.93ID:tmW9+jq1
定義至上主義者とは一般的な会話が成り立たないことがよくわかる
2017/08/07(月) 00:51:00.39ID:r7C/NYo5
定義至上主義なら最初から「アドレス渡しと呼べ」と言えばいいだけだから、ただ文句つけたかっただけだと思うよ
2017/08/07(月) 01:02:22.98ID:L++MnVlz
定義至上主義者はID:r7C/NYo5のことだと思うが
「ポインタ渡し」だの「アドレス渡し」だの言葉の定義に拘ってるようにしか見えん
2017/08/07(月) 01:04:50.56ID:uOfJK7yi
>>694
厳密にはNULLポインタとかがアドレスじゃないから、「ポインタ型の値」といったほうが汎用的では
そして、
>>685
によると(場合によってはポインタ型の値)もポインタと言ってる箇所があるのかな
仕様書読むのめんどくさい

どれにせよ、厳密な表記しても初心者には得がないな
2017/08/07(月) 01:06:41.28ID:Uo4tfgNR
>>693
printfに対する知識がなければ、アドレスを渡しているところまでしかわからない
2017/08/07(月) 01:08:08.23ID:tmW9+jq1
この流れでそう思える読解力は凄い
言葉の定義で頓珍漢な噛みつき方したのは
ID:Uo4tfgNRとID:YE/9ro9hだろ
2017/08/07(月) 01:10:17.31ID:r7C/NYo5
>>701
そんなことで人のことをガイジガイジ連呼していたの?
2017/08/07(月) 01:11:58.49ID:ITzYZ/9b
人工知能は人間らしい解釈ができないから仕方ない。
2017/08/07(月) 01:14:42.90ID:tmW9+jq1
これチューリングテストの実験場だったのか
見抜けなかったわ〜w
2017/08/07(月) 01:15:35.04ID:DdwwpY1/
だからさぁ。使い道を聞かれてんだよ、使い方じゃねーんだよ。さっさと答えてやれよ。

javaやpascalはポインタ使わなくてもプログラム書けるのにCにポインタが必要になる使い方をよ。

もしかしておまえら入門書読んで理解したつもりなだけで、ポインタが何か分ってないんだろ?
2017/08/07(月) 01:18:08.93ID:r7C/NYo5
>>706
俺はガイジ連呼厨の意図が知りたかっただけだし、そこまで偉そうに言うなら君が答えてあげなよ
2017/08/07(月) 01:19:37.44ID:Uo4tfgNR
>>703
お前をガイジと呼んだのは、書かれていない単語が見えてたからだと説明したはずだが
2017/08/07(月) 01:21:33.94ID:ITzYZ/9b
そこ、放送禁止用語も知らない一般人、オンエアしちゃダメ。
2017/08/07(月) 01:26:39.77ID:r7C/NYo5
>>708
俺以外に対してだよ
2017/08/07(月) 01:35:13.99ID:DdwwpY1/
結局、javaやpascalはポインタ使わなくてもプログラム書けるのに
Cにポインタが必要になる使い道、理由は誰も分らないのかよ。

ガッカリだぜ。なにがC言語なら俺に聞けだよ。
2017/08/07(月) 01:35:26.77ID:ITzYZ/9b
┌────────┐
│        │
│  /■~\   │
│  (´∀`∩)  │
│  (つ  丿  │
│  ( ヽノ   │
│  し(_)   │
│        │
│Now Onigiring...│
│        │
│ 暫くおにぎりで │
│ お待ちください │
└────────┘
2017/08/07(月) 01:38:45.36ID:ITzYZ/9b
http://pg-kura.hatenablog.com/entry/20120616/1339856279
2017/08/07(月) 01:41:43.94ID:Uo4tfgNR
>>703
> printf("Hello, C world!\n"); これがポインタだっ どやっ
十分にガイジ

「ポインタ渡し」のガイジ事か?
> こいつらの反論が反論になっていないな
> C分かっていればそのコードが
> ポインタ渡しになっていることは直ぐに分かるんだけどね
printfの知識が無ければわからない
「渡され」を「渡し」と呼ぶ
十分にガイジ
2017/08/07(月) 01:44:12.93ID:ITzYZ/9b
生で全国放送なんで、影響力強いっす。学校でイジメの真似事されると困ります。ですから、放送コードに違反した発言は極力慎むように頼みます。
2017/08/07(月) 01:48:52.14ID:r7C/NYo5
>>714
最初のは確かに渡されだけどポインタじゃない?一応間違ってはないんじゃない? 最初にそのレスした時相手のprintfの知識とか考えてなかっただろうし。

それに「ポインタ渡し」は慣用語として定着してしまっている側面もあるからその用語を使っただけでガイジ認定は早いよ
ある程度の慣用語は意図を汲んだ上で、間違ってると思うなら的確に指摘しないとコミュニケーション成立しなくてどっちがガイジかわからなくなっちゃう
2017/08/07(月) 01:50:24.62ID:Amcgn4Bl
>>711
ポインタという仕組みを1つ導入することでアドレスを直接操作することができるからかな
参照だとアドレスを操作できない
他の言語はアドレスを逆に操作させないことで安全性を保つというスタンスだけど
C/C++は安全でない代わりにアドレスを直接操作する事ができるというスタンス

あとはメモリ操作のコスト削減があげられると思う
for(i = 0; i < MAX; i++){
dest[i] = src[i];
}
とやるよりも
src_p = src;
dest_p = dest;
dest_end_p = dest + MAX;
while (dest_p < dest_end_p) {
*dest_p++ = src_p++;
}
とやるほうがコストが軽い
2017/08/07(月) 01:50:56.10ID:ITzYZ/9b
動物園の檻の中で「あいつはオラウータン」「こいつはゴリラ」とかぼやいてる飼育員。
2017/08/07(月) 01:55:31.83ID:Amcgn4Bl
脱字訂正
誤:*dest_p++ = src_p++;
正:*dest_p++ = *src_p++;
2017/08/07(月) 02:04:29.54ID:Uo4tfgNR
>>716
やっぱり見えないものを見てるガイジか?
> printf("Hello, C world!\n");
これのどこに
> A pointer is a variable that contains the address of another variable.
が現れているんだ?

確実に配列とポインタの区別がついてないガイジだろ
2017/08/07(月) 02:11:29.62ID:r7C/NYo5
>>720
渡され側は先頭アドレスを格納したポインタであって、
そのレスをした人は最初にレスした時、相手のprintfの知識とか気にしてなかっただろうって書いたつもりだけど、なんか間違ってた?
2017/08/07(月) 02:12:45.69ID:ITzYZ/9b
引数は変数の一種と見なすのも一理あるだろう。仮引数も変数と見なしても実用上は問題ない。
それとも仮引数は変数ではないと言い張りたいのか?
2017/08/07(月) 02:16:49.89ID:ITzYZ/9b
我々は実用性を重視するが、理論上では仮引数はポインターではないかもしれない。君のような理論家ではそれは重要かもしれないが。
2017/08/07(月) 02:19:54.41ID:Uo4tfgNR
>>721
> printf("Hello, C world!\n");
この一文のどこにポインタが使われてるんだ?
printfの定義は「この一文」には含まれないよな
subroutine printf(s)
character*80 s
かもしれんぞ


591 デフォルトの名無しさん[] 2017/08/05(土) 05:11:53.62 ID:dUt+j3iS

>>584
printf("Hello, C world!\n");
この一文でもう既にポインタを使っているわけだが?
2017/08/07(月) 02:30:03.96ID:r7C/NYo5
>>724
とりあえず、もしfortranから呼んでるならなら_printfじゃない?
さっきから言われた側の知識に言及していらっしゃるけど、それこそ一般に言うとprintfって言ったら普通はstdio.hのものを指すし、言われた側もまさかfortranとは思わないよ
そんな病的な状況を例に出さないといけない時点でおかしい噛みつき方してるってわかるもんだと思うけどなあ
2017/08/07(月) 02:31:22.31ID:ITzYZ/9b
>>724
それはC言語以外の話になるだろう。
2017/08/07(月) 02:36:12.54ID:ITzYZ/9b
printfの仮引数がポインター型だから、printf内部とprintfの型情報でポインターを使っているといっても間違いではない。
2017/08/07(月) 02:41:35.68ID:ITzYZ/9b
頭でっかちの理論家が、間違いを含む古い書籍を読んで、一字一句正しいと思い込んでいるのは最悪な状況だ。
2017/08/07(月) 02:46:48.50ID:Uo4tfgNR
>>722
「この一文」と限定したんだから、それ以外の知識は不要で、これだけでポインタを使ってるという事だな
2017/08/07(月) 02:48:03.30ID:Uo4tfgNR
>>727
プロトタイプも「この一文」以外の知識だよ
ボンクラ
2017/08/07(月) 02:48:13.58ID:YE/9ro9h
同意
俺も>>694では単に概念を述べただけなのに何故だか定義至上主義にされてしまったからな
理論化にとっては定義が大事なだけであって概念を理解しようとしない
2017/08/07(月) 02:55:53.68ID:ITzYZ/9b
>>730
一文の意味論を考えると、やはりその仮引数はポインターだという結論になる。
2017/08/07(月) 02:59:45.50ID:ITzYZ/9b
そのうちprintfがマクロだとか言い出す
2017/08/07(月) 03:15:03.46ID:ITzYZ/9b
教育上は、引数は関数に渡せる変数だと指導する方が分かりやすい。ただ、コンパイラーや言語を考えるとき、理論上では問題がある。
2017/08/07(月) 03:21:11.00ID:ITzYZ/9b
実際、仮引数は、変数と同じように型を持ち、変数と同じように値を代入したり、値を取り出したりできる。
これを変数ではないとするのは直感に反する。だから教育上の配慮から、理論以外では、仮引数は変数だと見なしてよい。
2017/08/07(月) 03:22:46.64ID:Uo4tfgNR
>>732
どこに「この一文」に仮引数が出てきてるんだ
お前も見えないものが見えるガイジか?
2017/08/07(月) 03:23:44.68ID:ITzYZ/9b
>>736
私には意味が見える。
2017/08/07(月) 03:30:44.55ID:ITzYZ/9b
>>736
お前のそのコメントのどこに意味が見える? 意味は見るものじゃなくて解釈するものだ。
意味論上で意味を解釈しようとしない馬鹿に議論はできない。
2017/08/07(月) 03:40:03.33ID:ITzYZ/9b
猿、猿、猿。さて猿は何匹? いいえ、これはただの文字。本当の猿ではありません。
printf("あほ"); さて、これはどんな処理でしょう。いいえ、この文はただの
テキスト。フォートランかもしれないし、
バイナリーではないから、本当の処理ではありません。
printf? 別に意味なんてありません。この一文に意味なんてありません。
こいつらは形而上学を知らないのか。
2017/08/07(月) 03:48:46.08ID:ITzYZ/9b
形而上言語では、一文とその意味は同一視するものだ。
そこで君が提示したprintf("なんちゃら");も意味があると仮定する。
これはprintf関数に"なんちゃら"という文字列データのアドレスを渡すものと解釈される。
よってこのprintfの最初の仮引数はポインター型だ。もし、ポインター型でなければ、形而上の意味が不定になり、
君が提示したことはC言語的には無意味だ、
という意味になる。馬鹿げてるよ。
2017/08/07(月) 04:01:49.30ID:ITzYZ/9b
 ∧_∧      半端者はみっくみくにしてやんよ
 ( ・ω・)=つ≡つ
 (っ ≡つ=つ
 /   ) ババババ
 ( / ̄∪
2017/08/07(月) 04:23:54.04ID:Uo4tfgNR
>>740
printf("なんちゃら");
はprintfと言う外部名を持つ手続きに引数として文字配列の先頭アドレスを与えて呼び出すという意味しかない
わかったかね ボンクラ
2017/08/07(月) 04:32:31.96ID:5iW9wRlr
月曜の朝っぱらから元気だな
とレス辿ったら昨日からずっとやってたのか
2017/08/07(月) 04:34:25.12ID:ITzYZ/9b
>>742
敢えてprintfの型に触れず誤魔化してるようにしか見えないが。printfの型が決まってなければ、明らかにコンパイルできない文だ。
2017/08/07(月) 04:49:23.24ID:ITzYZ/9b
 ∧_∧      半端なヤツはみっくみくにしてやんよ
 ( ・ω・)=つ≡つ
 (っ ≡つ=つ
 /   ) ババババ
 ( / ̄∪
2017/08/07(月) 04:55:23.95ID:ITzYZ/9b
「戻り値」はダメとか言ったらキリがない。
言葉の世界は多数決で決まる。
時代錯誤な正義を振りかざすな。
2017/08/07(月) 05:16:25.45ID:ITzYZ/9b
const char a[1] = "";
const char *p = "";
assert(sizeof(a) == 1);
assert(sizeof(p) == sizeof(void *));
a++; // Error
p++; // OK
2017/08/07(月) 05:33:55.94ID:ITzYZ/9b
我が国は教育上の配慮を生徒よりも先回りして先回りして考えているから、教育水準をここまで
高めることが出来たんだ。教育上の配慮がないなら、答えを砂漠の中から探させることになってしまうぞ。
お前は天才だからいいが、エリートじゃない一般人は教育上の配慮を行った教材じゃないと生き残れない。
2017/08/07(月) 06:44:33.33ID:qWjEOBrh
>>744
コンパイルするのにprintfの型が既知である必要なんてないだろ
何言ってんだコイツ
2017/08/07(月) 06:52:48.38ID:bZKJxmgb
>>672
これどこの定義か知らんけど(変数じゃなくて)関数へのポインタって言うのもあるよね?
2017/08/07(月) 07:37:27.89ID:ITzYZ/9b
                  ┌─┐??
                  |も.|??
                  |う |??
                  │来│??
                  │ね│??
                  │え .|??
                  │よ .|??
       バカ    ゴルァ  │ !!.│??
                  └─┤    プンプン??
     ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д)??
     | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U??
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎
752デフォルトの名無しさん
垢版 |
2017/08/07(月) 07:48:24.65ID:xW9C/CpC
>>735
仮引数ってプロトタイプ宣言の引数じゃなかったっけ?
あれ、関数の型を教えるだけだから、型だけ書いて変数書かないとかもおkだお。

int hoge(int);
2017/08/07(月) 08:38:13.41ID:oeQKd2lB
あいや〜
昔 -traditional でgccでコンパイルして
動かせた化石ソースが、
今はもう -traditional使えないんで
コンパイル出来ない、動かせないアルよ。
2017/08/07(月) 09:14:12.38ID:dOHD//zn
>>752
仮引数かいてなくて どっちがどっちじゃ! と迷う qsort
qsort(void*, size_t , size_t , int (*)(const void*,const void*)):
2017/08/07(月) 09:25:07.14ID:Uo4tfgNR
>>750
自分で調べて一次ソースを持ってこい
許容されるソースはK&RかISO/JIS/ANSIに準ずる規格票
2017/08/07(月) 09:27:48.56ID:Uo4tfgNR
>>754
仮引数もガイジ認定したい用語だ
原文ではparameter
実引数をあらわすargumentはactual argumentまたはactual parameterとも呼ばれる
実仮引数 w まさにガイジ用語
2017/08/07(月) 09:29:25.08ID:dOHD//zn
>>756
漢字にすると面倒な言葉だね・・・ たまに何だっけ?ってなることがある
2017/08/07(月) 09:30:00.41ID:r4dv7rmY
化石ソース

#include<stdio.h>

int function(a, b, c)
int a;
int b;
int c;
{
return a*b + c;
}

int main(void){
printf("%d\n", function(5, 4, 10));
return 0;
}
759デフォルトの名無しさん
垢版 |
2017/08/07(月) 09:30:57.72ID:xW9C/CpC
>>754
いあ。。。
実引数の方みろよとしか。。。
プロトタイプ宣言に何期待してんだよ。
2017/08/07(月) 09:35:47.75ID:dOHD//zn
数使ってるなら、そのうち覚えるけど、そうでもないのはいちいち調べるのに手間だし
最近のは プロトタイプをポップアップ表示したりする環境もあるし ね
2017/08/07(月) 10:58:51.07ID:oP4SeJHR
英語圏のガイジはどんな用語擬きの英語使うか気になる
2017/08/07(月) 12:44:52.49ID:bZKJxmgb
>>755
お前が調べて持ってこいよ w
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況