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

レス数が950を超えています。1000を超えると書き込みができなくなります。
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/08(火) 08:49:22.58ID:qTxWRpQR
幼稚な勝ち負け論
2017/08/08(火) 09:28:08.76ID:eouAXJYK
>>850
それに文句があるなら、その先の章も読んだ上で、カーニハンとリッチーに言え
K&R 1stで学んだんだろ w ガイジ
2017/08/08(火) 09:30:49.19ID:uN6BnjID
ポインタが変数かどうかとか言ってるのって>>778か?
そしてそれにレスしてるID:OgCRmlagか?

それ以前は居なかったような
2017/08/08(火) 09:34:31.83ID:2fnixEy5
有用な情報としては>>840があって、残りのほとんどは子供の喧嘩とそれをからかっている周囲の茶々だから、スルーしとけばいいよ。
2017/08/08(火) 09:38:26.73ID:eouAXJYK
>>854
>>840こそポインタと配列を混同する諸悪の根源
ポインタ型をポインタと呼ぶ事で、配列とポインタの区別が出来ない、ID:OgCRmlagのようなガイジが量産される
2017/08/08(火) 09:39:36.53ID:oLfqgxcT
>>852
「それ」って「A pointer is a variable that contains the address of another variable. 」のことか?
そこには文句ないよ。
勝手に「ポインタが変数かどうか」とかいう文脈にすり替えたことには文句があるけどな
2017/08/08(火) 09:55:39.20ID:eouAXJYK
>>856
ガイジID:OgCRmlagは文句があるようだぞ
2017/08/08(火) 10:23:08.14ID:oLfqgxcT
>>857
そいつの主張は俺もガイジだと思うよ
859C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ
垢版 |
2017/08/08(火) 16:47:33.39ID:46jc69TQ
質問がある奴はVIPに来れば大体俺がいるよプゲラwww
2017/08/08(火) 21:02:06.34ID:CWtfXRt7
>>859
そのハンドルでは誰も信用しないだろう
2017/08/08(火) 21:06:09.48ID:SUxfydq2
> 7 名前:C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ [sage] 投稿日:2017/08/08(火) 17:06:43.43 ID:46jc69TQ [1/3]
> アセンブラを1行ずつ実行するにはとうやってやればいいんだろう?
> エミュレータぐらいしか思いつかないわ

> 11 返信:C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ [] 投稿日:2017/08/08(火) 20:06:57.31 ID:46jc69TQ [3/3]
> windowsの場合APIが用意されてるだろ?
> あれ1行ずつの実行って出来なくね?
> CPUの方にデバッグの機能がついているのだろうか…

こいつド素人。
862アムドクラス (4f6c-czis 110.132.254.159)
垢版 |
2017/08/08(火) 21:50:07.01ID:z5MuZpZP
AMDの勝ち
2017/08/08(火) 21:58:43.88ID:eouAXJYK
> printf("Hello, C world!\n"); これがポインタだっ どやっ
よりはまし
2017/08/08(火) 21:59:58.58ID:m3/ZcJyF
>>863
いつまで言ってんだ? 引数はポインター型だって結論だっただろ。
2017/08/08(火) 22:18:43.73ID:O3M4HeCn
この場合printf関数の引数は、被参照型 文字列リテラル オブジェクトから派生されたポインタ型のオブジェクト
2017/08/08(火) 22:19:57.77ID:0hOvAoxM
オブジェクトなどという高尚な概念はCにありません
867デフォルトの名無しさん
垢版 |
2017/08/08(火) 22:21:06.28ID:NzfA1f0K
Pointer
https://goo.gl/images/8NAARa
2017/08/08(火) 22:25:41.34ID:HehkFpa6
>>866
>>840を見直して来い
JIS X 3010で使用されている用語だ
勿論オブジェクト指向とは何の関係もない
ていうかK&Rでもオブジェクトという用語は使われていた気がする
2017/08/08(火) 22:35:05.98ID:0hOvAoxM
しらん
まぎらわしい言い方してるから自分の頭も混乱するんだ

文字列リテラルからポインタ型が派生するのって変じゃないか
ポインタのほうが汎用的だし逆だろ
2017/08/08(火) 22:48:27.60ID:4AThmWF1
>>869
抽象的思考のできない奴だな
intからint*を派生するのと同じことを言ってるだけ
派生されたポインタ型を変数に代入したものがポインタ変数
お前の言うポインタとはいったい何だ?
2017/08/08(火) 22:54:10.15ID:uStlgM0t
い、いやー。object自体は本当にK&Rに書いてあったよ
オブジェクト志向登場以前から使われてきたんじゃないかな?
2017/08/08(火) 22:55:26.67ID:m3/ZcJyF
同音異義語つーやつやな。
2017/08/08(火) 22:56:20.16ID:0hOvAoxM
派生の意味もちがうんかい
2017/08/08(火) 23:06:23.25ID:ORaXP+Gp
曜日の頭文字

#include<stdio.h>
int main(void){
int w = 3;
printf("%c\n", "SMTWTFS"[w]);
return 0;
}
2017/08/08(火) 23:15:50.51ID:yrQEUEp6
C言語で派生って言ったら型の派生の事だな
少なくとも型変換の意味ではない

配列型の式(文字列リテラル)が型変換されて非左辺値なポインタ型の式になるんだろ
>>866は変換前後ともオブジェクトだって言ってるけど
アドレス付け可能な領域に保存されている保証のないものがオブジェクトなの?
2017/08/08(火) 23:16:38.91ID:yrQEUEp6
安価ミスった>>865
2017/08/08(火) 23:23:10.94ID:fmd6E2St
何に盛り上がってるのかよくわからんけど
C言語だってオブジェクトはオブジェクトって呼ばれてる。
K&Rにも書かれている。
もちろん普通名詞のオブジェクトね
2017/08/08(火) 23:30:11.34ID:O87Z3HpH
張っておくか
>>840から転載
JIS X 3010
ポインタ型(pointer type)は,被参照型(referenced type)と呼ぶ関数型,オブジェクト型又は不完全型から派生することができる。
ポインタ型は,被参照型の実体を参照するための値をもつオブジェクトを表す。被参照型Tから派生されるポインタ型は,“Tへのポインタ”と呼ぶ。
被参照型からポインタ型を構成することを“ポインタ型派生”と呼ぶ。
2017/08/08(火) 23:37:29.99ID:0hOvAoxM
日本語的に派生って言ったら亜種ができることじゃん

double と *double って全然意味ちがうだろ
JavaとかでいったらObjectとRef<Object>ぐらいちがう
アドレスという概念をもちだして、多少関係してる違う型つくってるんじゃないか

JISがまちがってる
2017/08/08(火) 23:45:35.34ID:yrQEUEp6
JISは間違ってない
構文上、型指定子に*は含まれない
宣言子で*を付けることで被参照型からポインタ型に派生させているのだから、型の派生で合っている

>>865は間違ってる
この場合は派生ではなく型変換
2017/08/08(火) 23:56:11.53ID:0hOvAoxM
文字列リテラル オブジェクトはたぶん中身の文字データのことだろう
定義にしたがうと
それへのポインタは文字列リテラルから派生したポインタだからいいんじゃないの
2017/08/09(水) 00:05:11.01ID:bnFISF+U
普通名詞としての派生なら良いんじゃねーの

規格で定義されている派生として言ってるなら間違いってだけ
派生は型に対しての規則であって型を持つ式(オブジェクト)は派生しない、派生型に型変換されるだけ
2017/08/09(水) 00:14:48.77ID:ckc2uc+D
型変換であろうとポインタ型派生であろうとポインタ型である結果は同じことではないの?
2017/08/09(水) 00:16:45.80ID:sYRFpLtr
世間に通じない用語を振りかざして些末な定義や言葉尻について無益な議論をしていると
大学時代を思い出してほっこりする
885C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 00:25:37.15ID:s1XZJ5Nh
>>861
なんで粘着されてんだよ…
あとこれの何がダメなんだ?
お前らデバッガのステップ実行に興味ないの?
ちょっと調べた所ではint 1で行けるかもぐらいか
2017/08/09(水) 00:29:18.16ID:bb8twRCP
>>885
Visual Studio使えばデバッグ楽勝やで。
2017/08/09(水) 00:30:50.08ID:s1XZJ5Nh
>>886
実行中のプロセスにアタッチして、アセンブラ見ながらステップインで解析したいんだけどVSじゃ出来なくない?
2017/08/09(水) 00:31:28.95ID:8y5srZEo
用語オブジェクトについての哲学的な論考や定義そのものがJISには載ってなさそうだな

深く考えずに音写しただけ
だからカタカナの用語になってる
2017/08/09(水) 00:34:53.01ID:7zaXDMDr
>>864
それが、ポインタと配列の区別をつけられない本質だ

>>744の大ウソをゴメンなさいしてからホザけ カス
2017/08/09(水) 00:35:31.88ID:bb8twRCP
>>887
バージョンやエディションによって使える機能が違う。気にせず使いたいなら、「買え」
2017/08/09(水) 00:37:19.05ID:s1XZJ5Nh
>>890
学生だしお金ないからね
2017のcommunityじゃ無理?
2017/08/09(水) 00:37:30.14ID:bb8twRCP
>>744
訂正。関数の型が決まってなくともコンパイルできることがある。
2017/08/09(水) 00:40:01.14ID:bb8twRCP
>>889
お前は人間失格だ。言葉が悪すぎる。
2017/08/09(水) 00:46:00.24ID:7zaXDMDr
>>893
あなた様も障害者手帳の申請をする事をお勧めするしだいで御座いまする。

まず、頭脳が残念過ぎまする。
そして、頭脳が残念過ぎまする。
加えて、頭脳が残念過ぎまする。
きっと、高い等級で認定されると愚考致しまする。

敬具
2017/08/09(水) 00:46:00.43ID:s1XZJ5Nh
ポインタの話題ならアセンブラやった方が早いと思うんだよね
ポインタとして宣言された変数は32bit環境なら4バイト、64bitなら8バイトのメモリが確保されるだけだが、配列の場合、サイズ×添字の分メモリが確保されて、配列名がその先頭アドレスをあらわすってだけなのに
2017/08/09(水) 00:48:50.01ID:ckc2uc+D
>>891
VS2017Enterpriseならこんな感じ
Communityはよくわからん
http://i.imgur.com/wI7bq3C.png
2017/08/09(水) 00:51:21.74ID:s1XZJ5Nh
>>896
いい感じだな
でも俺がやりたいのはソース無しの実行可能ファイルを、アセンブリを表示しながらステップインだからVSじゃ出来ないのかも…
まあ言っちゃうとクラックがしたいんだけどね
2017/08/09(水) 01:02:47.80ID:bb8twRCP
>>894
現実世界ではあのごとき言動はアウトだからな。忠告だ。
2017/08/09(水) 01:05:03.10ID:Mt1oO7bk
>>897
Windowsで?
Linux なら gdb でやれそうな感じはするが、ソースなしだとどうなんだろう?
900C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 01:06:30.01ID:s1XZJ5Nh
>>899
一応LinuxはUbuntuならあるよ
やっぱりLinux勉強しとくべきかな?
2017/08/09(水) 01:08:37.25ID:bb8twRCP
クラークなら、windbgとかollydbgとか使えば? 汗もでるよ。
2017/08/09(水) 01:14:59.65ID:s1XZJ5Nh
どっちも持ってて試したけどイマイチ…
int 3のブレークポイントがある所でしか止まらないじゃん?
普通に最初からステップインでやれないものか…
だから>861でエミュ上での実行が良いって言ったんだよね
2017/08/09(水) 01:16:05.66ID:7zaXDMDr
>>897
出来るよ やり方は片山KUZUが見てるから教えない
2017/08/09(水) 01:19:35.53ID:s1XZJ5Nh
>>903
あっそう(^^;
2017/08/09(水) 01:35:22.34ID:s1XZJ5Nh
どうもフラグレジスタのTrap Flagというのをセットすることでシングルステップ実行が出来るらしい…
とても面倒臭いけども自分でコード書いて頑張りますわ
2017/08/09(水) 04:26:02.60ID:deJRgLks
何も知らないド素人同然なのになんでC言語すまたーとか名乗ってんの?
907デフォルトの名無しさん
垢版 |
2017/08/09(水) 05:25:27.23ID:J9yCSat5
てす
2017/08/09(水) 06:39:45.89ID:UBBon8Wk
巣股ー?
2017/08/09(水) 06:40:21.09ID:UBBon8Wk
どうせなら入れたい
2017/08/09(水) 09:13:43.09ID:VQlIa1Fm
gdbでstepiってやればできんじゃねえの?ググれば1分で分かりそうだけどw
911C言語ますたー《ますたー軍団(常時募集)の長》 ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 11:32:53.54ID:s1XZJ5Nh
>>908
なんだー
>>910
だからLinuxじゃなくてwinなんだよww
Linuxは箱庭でしか動かんわ
2017/08/09(水) 11:33:36.39ID:s1XZJ5Nh
>>906
ますたーって読んでいいぞ
2017/08/09(水) 11:38:08.60ID:deJRgLks
Cなのにスマタさん。特権プレイモードってのがあるんですよ。Winの起動オプションをよく見てください。
2017/08/09(水) 11:38:48.46ID:vlyUfKCW
>>911
gccもgdbもWindowsで使える
915C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 11:41:46.58ID:s1XZJ5Nh
>>913
ほー有益な情報をありがとう
それだとどんなコマンドが使えるの?
916C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 11:42:09.25ID:s1XZJ5Nh
>>914
あ、マジで?
勉強不足だわ…
2017/08/09(水) 11:44:51.11ID:wdbwq19+
cp/m80で使えるgdbはどこ?
2017/08/09(水) 11:46:56.01ID:deJRgLks
どうやらCなのにスマタさんは童貞です。
919C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 11:57:25.81ID:s1XZJ5Nh
ちょっと調べてみたんだがgdbはソースがあって、-gオプションでデバッグ情報を生成したときのみ使えるコマンドじゃん
俺がデバッグしたいのはただの実行可能ファイルなんだ…
920デフォルトの名無しさん
垢版 |
2017/08/09(水) 12:02:30.41ID:J9yCSat5
>>848
案の定w
もう、とぼける位しかできねえボコボコだもんなおまえ

841に6.5.3.2と書いてあるのがどういう意味か
見当もつかない赤っ恥に気づきもしないからこそ
それでとぼけたつもりになっているんだろう

 浅 は か な や つ w
921デフォルトの名無しさん
垢版 |
2017/08/09(水) 12:22:51.13ID:6bCVBseb
>>919
行番号やデバッグシンボルが見られないだけで、gdb自体は使える
ollydbgやらにしても、任意の場所で止めたければ、ブレークポイント張れば済むだろ
922C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 12:37:30.55ID:s1XZJ5Nh
>>921
おお使えたわw
でも実行ファイル側が入力待ち状態なんだけどデバッガ操作できない…
当たり前かここら辺はどうやって追えばいいんだろうか
手前にブレークポイント作ってステップインかな?
2017/08/09(水) 12:39:16.06ID:LnmC5B+P
>>917
それはお前が作るんだよ
924デフォルトの名無しさん
垢版 |
2017/08/09(水) 12:42:14.46ID:J9yCSat5
いるよなー
GNUはハッカーのものだってことを忘れてるやつ
925C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 12:55:30.37ID:s1XZJ5Nh
最初っからステップインで実行したいんだけどシンボルテーブルが無いおかげでブレークポイント作れないからアドレス0x00400AFFにCCを入れて実行開始アドレスを0x00400AFFに書き換えたんだけどローダが読んでくれないみたい…
アドバイスありませんかね
2017/08/09(水) 13:13:43.97ID:FEqENNu4
gdbなら「b *アドレス」でブレーク貼れるでしょ
927C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 13:31:17.32ID:s1XZJ5Nh
>>926
どうもデバッグ情報がないから無理っぽい…?

で、仕方なく開始アドレスにバイナリエディタでCC入れて止めてみたんだけど、デバッグ情報がないせいで’s’コマンドが実行できない
”cannot find bounds of function."って出るんだけど、ググったらデバッグ情報がないとこうなるみたい
gdbじゃexeのシングルステップ実行は無理なんじゃ…

とりあえずネットで調べながら自分でシングルステップ実行するプログラム作ったんだけど、デバッグイベント起こらなくてWaitForDebugEvent関数で止まるwww
どうすりゃデバッグイベント起こせるんだよ
928C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 14:44:13.23ID:s1XZJ5Nh
しょぼいデバッガみたいのは動いたけどシングルステップ実行にならん…
なぜだ
929デフォルトの名無しさん
垢版 |
2017/08/09(水) 15:31:30.38ID:WoeKVDyE
なんで実行する必要があるんだ? 逆アセンブルしてソースコードを起こせばいいでしょ。
930C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 15:43:21.53ID:s1XZJ5Nh
>>929
そんな膨大なコードから目的の部分が見つかるわけないでしょ
2017/08/09(水) 16:28:28.13ID:7zaXDMDr
>>920
で、それがどうしたんだ?

> printf("Hello, C world!\n"); これがポインタだっ どやっ
手帳申請しろよ w
2017/08/09(水) 16:37:22.13ID:7zaXDMDr
>>920
この、ガイジは全然理解してない事を理解できずにガイジを再生産しようとしたやがる

> printf("Hello, C world!\n"); これがポインタだっ どやっ
これは、ポインタじゃなくてポインタ型
そしてそれは、ポインタと配列を区別出来ないガイジの本質

役所には盆休みはないから、休みのうちに手帳申請しとけよ
933デフォルトの名無しさん
垢版 |
2017/08/09(水) 16:46:18.30ID:J9yCSat5
> これは、ポインタじゃなくてポインタ型

失笑
「ポインタと配列を区別出来ないガイジの本質」を
そのままお返しだ、さあ受け取れアフォ
934デフォルトの名無しさん
垢版 |
2017/08/09(水) 16:49:08.32ID:J9yCSat5
こーゆー手合いは、こっちから攻め込まなくても
時間稼ぎしてれば勝手に自爆してくれるから楽だ
935C言語ますたー ◆oa6k//3vOQ
垢版 |
2017/08/09(水) 16:49:25.49ID:s1XZJ5Nh
機械語のシングルステップ実行に成功した
けどレジスタとか表示させるのにまたプログラム改変しなきゃなんない
面倒臭すぎる
2017/08/09(水) 16:51:48.67ID:zUFk2ZAi
配列も文字列リテラルも式の中の評価はポインタ型だからな
引数として評価されると本質は同じことになる
937デフォルトの名無しさん
垢版 |
2017/08/09(水) 17:00:02.70ID:J9yCSat5
>>936
ちげーよ
assert(sizeof(const char *) == sizeof "string literal"); //abend
2017/08/09(水) 17:09:17.76ID:zUFk2ZAi
>>937
それは sizeof 演算子を適用したときの評価結果が異なっているだけだろ
型は同じでもオブジェクトそのものは別なのだから当たり前
2017/08/09(水) 17:11:40.05ID:PV13OBMN
関数の引数として、配列をまるまるスタックにつむには
struct で包むぐらい? typedef はポインタのままよね?
https://ideone.com/3MYBoM
940デフォルトの名無しさん
垢版 |
2017/08/09(水) 17:17:25.80ID:J9yCSat5
>>938
おまえさんはこう言ったんだぜ
> 配列も文字列リテラルも式の中の評価はポインタ型だからな

sizeofつまりunary-expressionは紛れもなく式の1つだ
よって式の中で文字列リテラルがポインタ型というのは正しくない
2017/08/09(水) 17:25:24.78ID:YmDhq+hb
>>940
面倒くさい奴だな
正確には>>937の前者は型の評価結果、後者は式の評価結果だ
sizeof演算子は型名に適用する場合と式に適用する場合の二通りの使い方がある
演算子の動作も評価も異なる
2017/08/09(水) 17:28:25.59ID:PV13OBMN
前置,後置の ++ や -- は式じゃない ってことないし
>>936 は見てる状況を限定しすぎてないかな?
943デフォルトの名無しさん
垢版 |
2017/08/09(水) 17:28:34.22ID:J9yCSat5
>>941
ほほー型の評価結果と式の評価結果とな
じゃあこれはどう説明する?
const char* ptr
assert(sizeof ptr == sizeof "string literal"); //abend
2017/08/09(水) 17:45:41.64ID:YmDhq+hb
>>943
それは式同士の評価結果の比較
ポインタ型のオブジェクト同士を比較してる
int型変数の場合、iと(i+1)のとき評価結果は異なるが、型は同じというのと同じ
945デフォルトの名無しさん
垢版 |
2017/08/09(水) 17:49:19.66ID:J9yCSat5
>>944
えっ!?
assert(sizeof ptr == sizeof("string literal" + 1)); //pass
おまえさん、これが通るのは何が変わったというんだ?
2017/08/09(水) 19:31:37.93ID:7zaXDMDr
今日もガイジID:J9yCSat5は元気だな
947デフォルトの名無しさん
垢版 |
2017/08/09(水) 19:46:02.23ID:J9yCSat5
ん? ガイジの称号はお返ししただろ、ガイジ君
2017/08/09(水) 20:48:57.04ID:afYQHR9U
個人攻撃抜きでやれば、面白い事言っているんだけどなぁ:-P
2017/08/09(水) 20:58:23.97ID:+5xcelsT
糞下らん議論でスレを汚すな
2017/08/09(水) 21:07:56.63ID:8y5srZEo
クソ下らんことが141000レスも続いてんだぞ
14万だ
過去スレなんて見た日にゃ目がつぶれてそのまま気絶だ
2017/08/09(水) 21:09:32.99ID:7zaXDMDr
ガイジID:7zaXDMDrは必死になって、
> printf("Hello, C world!\n"); これがポインタだっ どやっ
これを否定するネタを探してきたらしいが
あてにならない(どうとでも取れる)JIS規格票は根拠にならんぞ

> A pointer is a variable that contains the address of another variable.
文字列は変数じゃない
従ってポインタじゃない これは神が決めた事
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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