C言語なら俺に聞け 148

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウカー Sacf-slpW)
垢版 |
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa
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/

※前スレ
C言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/09/19(水) 18:46:51.43ID:5wa+YDhW0
JPCERTに書いてある
> DCL12-C. 抽象データ型は opaque な型を使って実装する
これ、言葉遣いが JIS に準拠してないね
- opaque な型
+ 不完全型
2018/09/19(水) 18:51:06.87ID:SdGhFMnDa
おぱきゅー
2018/09/19(水) 18:52:22.93ID:sSjeJI6sd
おぺいきゅー
2018/09/19(水) 20:53:36.31ID:6LbAKjXm0
あのね opaque を「おぱきゅー」と読むとね、
中がどうなっているか見えないって感じがヒシヒシ伝わるんだよ。
6デフォルトの名無しさん (アウアウカー Saeb-slpW)
垢版 |
2018/09/19(水) 21:01:51.92ID:zcXFtBV7a
opaque音頭
2018/09/19(水) 21:10:39.04ID:kKUGVzPQ0
ドラハッパー?
2018/09/19(水) 21:40:07.01ID:aiIpKBDGM
>>5
寧ろ向こう側が透けて見えて意味を取り違えそうな…
9デフォルトの名無しさん (アウアウカー Saeb-slpW)
垢版 |
2018/09/19(水) 21:46:14.52ID:zcXFtBV7a
透けるトン
10デフォルトの名無しさん (ワッチョイ 9780-9b2l)
垢版 |
2018/09/19(水) 22:44:21.77ID:xLP4ypV20
おおきいおっぱいを占領する
11デフォルトの名無しさん (アウアウカー Sae9-kke4)
垢版 |
2018/09/20(木) 12:33:56.62ID:irJ5n1n9a
おっぱいがキューイングされてる状態だろ
12デフォルトの名無しさん (アウアウカー Sae9-rLjT)
垢版 |
2018/09/20(木) 12:46:40.86ID:rEtRtbV+a
キューは口を尖らせて発音
2018/09/20(木) 13:32:01.11ID:6Uvn6M6wH
俺氏、マジレスするタイミングを完全に失う
2018/09/20(木) 14:06:56.92ID:4xeYkQf2a
不可視を不完全と呼ぶのはちょっと良くないと思うわ
まあ視点が違うんだけども
2018/09/20(木) 15:50:43.96ID:kJMlDz7M0
ピンプル的な意味で「見えない」なら合ってんじゃん
2018/09/20(木) 19:19:48.48ID:fVTsYrUH0
みんなmusl libcとか使ってたりする?
プロジェクトの内容だけみると けっこう良さげなんだけど
あまり日本語の情報を聞かないし 実際はglibcとかが大半なのかな。
2018/09/21(金) 11:19:07.18ID:7KdLYb7A0
CはGNUが9割
2018/09/21(金) 17:35:46.83ID:r4ObfaEn0
c言語本格入門のリスト構造(単方向リスト)が理解できず困っています。
書籍には図を書けば理解できるとあり、ソースにprintf関数をところどころに入れて、ポインタの動きを追いかけていたのですが、余計こんがらがってしまいます。
他のサイトや他者の質問が掲載された掲示板なども参考にしましたが、さっぱりわかりません。
図を描いても理解には繋がりません。
プログラムは250行くらいあり、掲載出来る様なサイトがあれば誘導お願いします。

ポインタの*ptr_now、*ptr_before、*ptr_new の動きと役割が理解できれば、前に進めると思うのですが、知恵を貸して下さい。
2018/09/21(金) 17:44:45.17ID:TewjjbP30
>>18
サイトは>>1にあるのを使えばいいよ
2018/09/21(金) 17:46:57.36ID:DzWt0PfVa
nowが今いる所でbeforeがさっきいた所でnewが新たに作る所?
2018/09/21(金) 18:05:52.26ID:r4ObfaEn0
>>18
now と before は作業用領域で、newは名前とかを格納しています。
2018/09/21(金) 18:39:31.34ID:FeY49FdEM
>>18
とある位置に新しいデータを挿入するサンプルコードなんじゃないか?

newが新たに挿入しようとするデータのアドレス、
nowが挿入先の直後のデータのアドレス、
beforeが挿入先の直前のデータのアドレス。
(単方向リストへのデータ挿入は新しいデータを挿入する位置の前後のデータのアドレスが必要のため)


ところでnowってスケジュールリストか何かなのか
2018/09/21(金) 18:44:04.65ID:M1mNaNG00
>>18
努力しているようだが、色々おかしい。

> ソースにprintf関数をところどころに入れて、ポインタの動きを追いかけていたのですが
ポインタの『動き』ではなく、ポインタの『中身』を追いかけろ。
ポインタは自然言語で言う「ポイントする(指し示す)もの」でしかないから、
正しい物を示しているかどうかだけであって、
それはポインタ自体ではなく、『中身』を見ないと判定出来ない。

> 単方向リスト
> *ptr_now、*ptr_before、*ptr_new
単方向リストならポインタは一つだけだし、
> now と before は作業用領域で、newは名前とかを格納しています。
名前の付け方が絶望的におかしい。
多分君の理解が間違っているだけだと思うが、
もしその理解が正しくて、ガチでこんな名前を付けているソースなら、
その本は今すぐ捨てるべきだ。
これはソースを上げれば誰かが見てくれるだろう。
(多分>>22が当たりだろう)

当たり前だが、
1. まず、0,1,2,3... とリストに入れて、それを表示(リストアップ)出来る関数を作れ。
2. 次に、その関数を用いて、挿入等したとき、期待通りにリストアップ出来るか確認しろ。
3. それでバグっているようなら、その後でいちいちIDE等で止めてポインタの値を確認するんだよ。
多分お前はデバッグの仕方もおかしい。

ただまあ正直なところ、このレベルの初心者ならリストなんてどうせ使わないし、
スキップしても構わんぞ。いちいち全部やらなくてもいい。
そんなことより、ゲームを作りたいのならそのゲームを作る方向目指してコーディングしろ。
そのうち、ポインタ等の意味も分かってきて、今回の問題なんて自然に解決出来るようになる。
2018/09/21(金) 19:29:46.56ID:820RD++bM
いちいちそんなに長文で噛み付くようなことか?
2018/09/21(金) 19:50:07.83ID:M1mNaNG00
>>22
ちなみに細かいようだが、

> (単方向リストへのデータ挿入は新しいデータを挿入する位置の前後のデータのアドレスが必要のため)
実際の所、単方向リストなら

struct List {
T value; // または T* ptr;
T* next;
};

だから、ループは now と next だけで構成しないと筋が悪いんだけどね。
ソート済みリストでデリミタがヌルポなら、

while (now->next && value <= next->value) now = next; // 同値なら挿入順

で now を確定させ、now と next の間に挿入する。
nowは「今」、newが「新」として、beforeは余計だね。
何かの説明をする為なのだろうけど、余計におかしくなってる。
(挿入するのは『nowとnext』の間であって、『beforeとnow』の間ではない)
■ このスレッドは過去ログ倉庫に格納されています