X



C言語なら俺に聞け 154
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん (ワッチョイ bf63-lB9F)
垢版 |
2020/01/14(火) 19:32:30.16ID:SgRnb4BR0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
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言語なら俺に聞け 153
https://mevius.5ch.net/test/read.cgi/tech/1566050562/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0853デフォルトの名無しさん (ワッチョイ 5fbd-NlPP)
垢版 |
2020/05/05(火) 18:12:23.92ID:ekADkGWO0
なぜ、fopenは"fp"でポインタ受け取り、fopen_sは"&fp"でポインタを受け取るのか分かりません。
定義?を見て、見極める方法はありますか?

fopen_sの定義に、引数として"FILE** pFile"を指定されているとこに、"&fp"が入るのは何故ですか?
他の命令でも*fp、fp、&fpのどれを入れるのか判断がつきません…。

<プログラム例>
FILE *fp
fp=fopen("aiueo.txt","rb");
fopen_s(&fp,"aiueo.txt","rb") …★

<fopenの定義>
errno_t fopen_s(
 FILE** pFile,
 const char *filename,
 *mode
);

語彙力が乏しいのでわかりにくくて大変申し訳ございません。
0857デフォルトの名無しさん (ワッチョイ 5fbd-NlPP)
垢版 |
2020/05/05(火) 18:42:13.15ID:ekADkGWO0
>>854-855
ありがとうございます。
以下の理解でよろしいのでしょうか?

(1)変数FILE* fpの場合
・"*fp"(FILE型?)
・"fp"(FILE*型)
・"&fp"(FILE**型)

(2)変数FILE**fpの場合
・"**fp"(FILE型?)
・"*fp"(FILE*型)
・"fp"(FILE**型)
・"&fp"(FILE***型)

変数に付ける"*"の数を増やすと、逆に型の"*"が減るのはなんか気持ち悪いんですね…
0859デフォルトの名無しさん (ワッチョイ 5fbd-NlPP)
垢版 |
2020/05/05(火) 20:26:30.94ID:ekADkGWO0
>>858
ありがとうございます。

型側と変数側で"*"を奪い合ってるイメージをすると覚えやすいかなと感じました。
int型:値そのものを入れるイメージ
int*型:値が格納されているアドレスを入れるイメージ(ポインタ)

int * p;
*p = 1; (1つしかない"*"を変数側に付けてしまったので、int型となり"*p"には値が入る。)
p=&hensu; (変数側に"*"を付けてないので、int*型となり、"p"にはアドレス番号が入る)
0860デフォルトの名無しさん (ワッチョイ df52-dhD/)
垢版 |
2020/05/05(火) 20:48:34.53ID:J1ERvQ2q0
>>859
覚え方は色々あると思うけど、俺は以下の方法がオススメ。

int i; → iがint型の値になる。iはint型の変数。
int *p; → *pがint型の値になる。
つまりpは*を付けてint型の値になる、すなわちp自信はint型を指すポインタ (=pはint*型の変数。)
0861デフォルトの名無しさん (ワッチョイ 2701-tcyL)
垢版 |
2020/05/05(火) 21:32:51.06ID:FuU+hT+R0
俺の覚え方はこうだな

&:メモリの位置(アドレス)を取り出す操作
*:メモリの位置に記録されている値を取り出す操作
型:値が格納されているメモリの幅を示す
  ※例えばint型は4バイトなのであるint型のポインターが0x0000を指していたら
   メモリの0x0000〜0x0031に格納されている値が対象となるデータ
   int型ポインターでなくchar型ポインターだとしたら
   メモリの0x0000〜0x0001に格納されている値が対象となるデータ
0863デフォルトの名無しさん (ワッチョイ 2701-tcyL)
垢版 |
2020/05/05(火) 21:43:41.89ID:FuU+hT+R0
>>861
*については2つ意味があるとして覚えているわ(この認識が合ってるのかは分からん)

変数宣言時の*の意味:宣言した変数がポインターであることを示す
それ以外の*:メモリの位置に記録されている値を取り出す操作

ポインター:メモリの位置を保存するための変数
ダブルポインター:(ポインターの)メモリの位置を保存するための変数
トリプルポインター:(ダブルポインターの)メモリの位置を保存するための変数
・・・・以下略
0864デフォルトの名無しさん (アウアウエー Sa9f-kSwD)
垢版 |
2020/05/05(火) 21:43:43.86ID:fevQ7qkha
fopen_s では、*fp を引数として参照渡ししてるからだよね、関数側で書き換えてもらうために
int i; を &i で参照で渡して、i を書き換えてもらうように、ポインタを渡して fopen_s で内容を書き換えてもらっている
0865デフォルトの名無しさん (ワッチョイ e7ca-Rrpt)
垢版 |
2020/05/05(火) 22:05:47.08ID:ZggaRwfV0
ポインタの覚え方もさることながら、型の修飾もどうだったかすぐ忘れるw
値を指し示す const ポインタなのか、const な値を指し示すポインタなのか、その両方なのか、それらの書き分けするのに毎回 google に聞いてる。
多重ポインタとか関数ポインタとか volatile なんかも組み合わされてくると、書けはしてももはや読める自信が無いw
0870デフォルトの名無しさん (ワッチョイ 6aad-48kr)
垢版 |
2020/05/06(水) 00:52:01.23ID:izcxg96Z0
>>822
FILE型についてはわざと中身を隠蔽していると思って良い。

オブジェクト指向の言語ならクラス変数が全てprivateになってるのと同じようなもの。で、そういう変数の読み書きは専用のメソッドを通して行う。
何故そうしているのかというと、外部から勝手に書き換えられたくないからだ。書き換えられると正常な動作を保証できなくなるということでもある。
0878デフォルトの名無しさん (ワッチョイ 268c-Ds/W)
垢版 |
2020/05/06(水) 08:39:08.38ID:yZWcrGyp0
>>859
C言語で2次元配列を動的に割り当てる4つの方法
もお薦め
0880デフォルトの名無しさん (アウアウエー Sae2-jgrQ)
垢版 |
2020/05/06(水) 11:10:31.35ID:q6Rk1GB6a
本来Cでは「二次元配列」と呼ばれないものまで
二次元配列の4種類!(キリっ)とか紹介するのは非常にまずいと思う
0881デフォルトの名無しさん (ドコグロ MM22-6mzC)
垢版 |
2020/05/06(水) 15:21:29.55ID:+SMDQMnPM
>>875
strcmp的とかよくわからんし、
>>779がCではなくC++を憶えないと理解できないコードがあるのか例示してくれ
と言われてもそんなものがあるなんて誰も言ってないから「ないけど、それが何か?」で終わる話なんだけどw
0882デフォルトの名無しさん (ワッチョイ ea0e-oySJ)
垢版 |
2020/05/06(水) 16:17:32.30ID:Ye566tnt0
>>881
では何故俺が792で「猫でもわかる」はCだと言ったことに対して
拡張子がcppだなどと絡んできた?

779 Win32APIを学ぶにはCとC++どっちを学ぶべき?
780 Win32APIはCだ(猫でものリンクを貼る)
786 むしろC++を知らないほうがいい、Cからやれ
795 「猫でもわかる」はCだ
796 C++のクラスを使ってない、拡張子はcppだ

この流れで「猫でもわかる」がC++だと主張してないとぬかすなら
アホは黙ってろ
0884デフォルトの名無しさん (ドコグロ MM8a-6mzC)
垢版 |
2020/05/06(水) 18:37:10.19ID:UHy6F9xlM
>>882-883
> C++のクラスとかを使ってないだけ
> そもそもサンプルコードのファイル名はsample01.cppとかだからC++としてビルドしてるし
と言う「事実」を書いてるだけだよw
C/C++の両方でビルドできるコードの存在を知らんのか?
0890デフォルトの名無しさん (ワッチョイ ea0e-oySJ)
垢版 |
2020/05/07(木) 08:31:41.78ID:Xvq6sZ7Q0
何も意図せずに「猫でもわかる」は拡張子がcppだと譫言をぬかすのは
ガキが何のボタンかわからんものを押しちまうのと同じ
自分が何をしでかしたか理解してない
0896デフォルトの名無しさん (ワッチョイ bb69-7oqX)
垢版 |
2020/05/07(木) 10:24:21.75ID:khGNNtcv0
f(x)=任意の数値 となる x を数値演算で探せ
g(x) = f(x) - 任意の数値 として g(x) = 0 となる x を数値演算で探す
※ 任意の数値が変数 x でも差しさわりはない f(x)-x = 0 となる x を探索する話に帰着

あとは >>894 の通り
ニュートン・ラプソン法なり 2分法なりで
0901デフォルトの名無しさん (ドコグロ MMcf-6mzC)
垢版 |
2020/05/07(木) 10:55:03.14ID:jSOdmY17M
>>898
指摘内容すら理解できてないのかよ…
流石に恥ずかしくね?w

> クラスを使ってないだけか?
> テンプレートや無名共同体は使ってるか?

> クラス「とか」な

> ここに書いてある内容のどこに
> >>779がCではなくC++を憶えないと
> 理解できないコードがあるのか例示してくれ

> と言われてもそんなものがあるなんて誰も言ってないから「ないけど、それが何か?」で終わる話なんだけどw

> この流れで「猫でもわかる」がC++だと主張してないとぬかすなら

> C/C++の両方でビルドできるコードの存在を知らんのか?
0906デフォルトの名無しさん (ワッチョイ ea0e-oySJ)
垢版 |
2020/05/07(木) 11:54:32.43ID:Xvq6sZ7Q0
>>905
で、おまえ792を嘘つき呼ばわりできるのか?
「猫でもわかる」はCだと言った792にイチャモンつけてきたのおまえだぞ
嘘つきなのか否か挙証責任を果たせないなら撤回か逃亡しかねえぞ
0908デフォルトの名無しさん (ワッチョイ 0bda-e0rh)
垢版 |
2020/05/07(木) 12:43:05.75ID:mY1dxeUW0
どうでもいいけど>>792のサイト内で

>この時ファイル名は「*.c」でも「*.cpp」でもかまいません。

と書かれてるくらいだから少なくともサイトの作者はC++は必須としてないように思えるけどなぁ
0910デフォルトの名無しさん (アウアウエー Sae2-jgrQ)
垢版 |
2020/05/07(木) 12:55:44.12ID:iKRewGMta
>>897
ルンゲクッタですねω判りますωω
0914デフォルトの名無しさん (アウアウクー MM73-jIkB)
垢版 |
2020/05/07(木) 14:41:31.91ID:itkoAyTSM
win32APIはCででもC++でもいいけどこのスレはc言語ならスレだから答えはcでいやん

それとどうでもいいけど拡張子は.cc派
0915◆QZaw55cn4c (ワッチョイ e798-EltK)
垢版 |
2020/05/07(木) 14:47:08.49ID:VS6AE9q50
>>914
>win32APIはCででもC++でもいいけど
コールバック関数はマングリングしていてはだめなので、最低コールバックだけは extern "C" が必要だと思いますから C++ オンリーというわけにはいかないでしょう
extern "C" を含んでの C++ 、というのなら理解しますが
0916デフォルトの名無しさん (ワッチョイ 8a52-ouS7)
垢版 |
2020/05/07(木) 14:52:09.99ID:NfUWzWTo0
>>912
自分に対する指摘は(ただの事実の指摘であっても)否定的な意味を持つ攻撃ととらえる残念な精神構造の人なんだと思う。最初の思い込みは後からどうやっても訂正しない(出来ない)タイプだろうから、これ以上突っつくのはやめてくれないかな?
理性のある側が引かないと、このどうでもいいレスバトルが終わらないから、頼むよ。
0924デフォルトの名無しさん (ワッチョイ ea0e-oySJ)
垢版 |
2020/05/07(木) 16:36:52.52ID:Xvq6sZ7Q0
>>923
俺にレスアンカーつけといて
そんな言い逃れは通らんぜ

自らの言葉に責任を持てない社会のクズにアホとか言われても
全く響かねえぜ、どうせその言葉にも責任持たないだろうからな
0925デフォルトの名無しさん (ワッチョイ ea0e-oySJ)
垢版 |
2020/05/07(木) 16:39:41.92ID:Xvq6sZ7Q0
こっちは弱点晒してんだぜ?
「猫でもわかる」のサンプルにC++の知識が必要な例を示されたら負けだ
こんだけノーガードしてやってんのに、そこを攻められない無能なやつw
0926デフォルトの名無しさん (アウアウエー Sae2-jgrQ)
垢版 |
2020/05/07(木) 16:49:50.98ID:8jv+kISLa
ID真っ赤な人をNGすればいいのかな?ω
0928デフォルトの名無しさん (ワッチョイ bb69-7oqX)
垢版 |
2020/05/07(木) 17:20:50.97ID:khGNNtcv0
>>915
スタックの使い方等の呼び出し規約に準じた関数へのポインタさえ渡ってれば
シンボル名が割当たってなくてもコールバックは為されるんじゃない?

シンボル名で呼び出す必要が出てきたときにマングリングがというのはあるだろうけど・・・ COM?
0929デフォルトの名無しさん (ドコグロ MM22-6mzC)
垢版 |
2020/05/07(木) 18:27:53.38ID:WyDD2uB5M
>>924
アンカーはお前のレスを参照してるんだからつけるのは当たり前
だからと言ってお前だけに言ってるわけじゃない
掲示板の使い方もわからんのかよ…

>>925
> 「猫でもわかる」のサンプルにC++の知識が必要な例を示されたら負けだ
だれもC++の知識が必要だとか言ってないのに何を言ってるんだよ
しかも勝ち負けとか
>>916が言う様に引っ込みつかなくなってるんだろうなw
0934デフォルトの名無しさん (ドコグロ MMcf-6mzC)
垢版 |
2020/05/07(木) 21:43:44.11ID:mj5cVlGOM
>>932
> 俺に言ってるだろ
お前に「も」言ってるよ
理解できるかどうか知らん
別に理解できなくてもいいよ、そういうアホもいるだろうしw

> 「猫でもわかる」はCなのかC++なのかShow your flatg!
なんでわざわざ頭悪い事を示すかなぁ

>>933
低能らしいレス乙
0936デフォルトの名無しさん (ワッチョイ fb7b-mW5x)
垢版 |
2020/05/08(金) 06:23:43.52ID:Br/73fC20
『猫でもわかる』のサイトで紹介されてるソースが
Cの範囲で書かれてるかC++特有の機能も使ってるか検証せよ、って
実際やってみるだけの価値のない口論な気がするけどなぁ。

そりゃ「俺の言ったことは正しい」「一片の反論も許さない」って
ご当人にはスレッド埋め立てるほど重要な件かも知れないけど。
それとも俺以外の皆さんはこの議論の決着を手に汗握って見守ってるのかな。
0938デフォルトの名無しさん (ドコグロ MM22-6mzC)
垢版 |
2020/05/08(金) 09:15:09.55ID:dq2lIdE/M
>> 「猫でもわかる」のサンプルにC++の知識が必要な例を示されたら負けだ
> だれもC++の知識が必要だとか言ってないのに何を言ってるんだよ
> しかも勝ち負けとか
> >>916が言う様に引っ込みつかなくなってるんだろうなw

確かにFAだなw
0939デフォルトの名無しさん (アウアウエー Sae2-jgrQ)
垢版 |
2020/05/08(金) 10:57:20.51ID:oIDbptWLa
>>935
文字通り隔離入院が必要だな
触らなければ感染しない
0941デフォルトの名無しさん (ワッチョイ 6aad-48kr)
垢版 |
2020/05/08(金) 11:08:34.04ID:VEr63gxN0
>>926
いや、もうこのスレ読まなくて良いと思う。見るのは次スレからで良いんじゃないかな。
0945デフォルトの名無しさん (ワッチョイ ea0e-oySJ)
垢版 |
2020/05/08(金) 14:03:29.86ID:FYQVpLgs0
まあ正直、あのサイトから
丸のまんまDLなんかしたことないから
拡張子なんか気にしてなかったな
petzoldとの説明の仕方の違いを読んでただけで

まさか、あれをC++だと言い張るやつがいるとは思わなくて面食らった
言い張ってねえととぼけているようだが
Cだと言う発言に同調しない以上BASICやCOBOLなわけもなく答えは1つだ
自分の発言のしょーもなさに気付いて言い訳しまくってももう遅い
0946デフォルトの名無しさん (JP 0Ha2-BedC)
垢版 |
2020/05/08(金) 14:17:14.69ID:UwSV314GH
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0

UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0

連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0

4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0

matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0

ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0

SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0

学術の巨大掲示板群 - アルファ・ラボ
ttp://x0000.net

数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

PS 連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
0947デフォルトの名無しさん (ドコグロ MMcf-6mzC)
垢版 |
2020/05/08(金) 14:27:02.39ID:CIh1Y7kYM
>>945
> Cだと言う発言に同調しない以上BASICやCOBOLなわけもなく答えは1つだ
またその話かよ、チャンスどころかノーガードじゃねーかw
まあ毎回玉砕してるのに無視してるんだから無敵だわな

> この流れで「猫でもわかる」がC++だと主張してないとぬかすなら

> C/C++の両方でビルドできるコードの存在を知らんのか?
0948デフォルトの名無しさん (ワッチョイ ea0e-oySJ)
垢版 |
2020/05/08(金) 14:48:39.11ID:FYQVpLgs0
>>947
ノーガードは>>925で言っただろ
こっちが引き下がる条件をはっきり書いてやってんのに
おまえそれができねえだろうが

で、何が玉砕だ? 弾切れのくせに勝利宣言してんなよw
https://dotup.org/uploda/dotup.org2139674.png
こんな状況で先手が投了したなんて言っても誰も信じねえのと同じだ
0951デフォルトの名無しさん (ドコグロ MM43-6mzC)
垢版 |
2020/05/08(金) 15:13:10.54ID:tdVddCdpM
>>948
既に
>> 「猫でもわかる」のサンプルにC++の知識が必要な例を示されたら負けだ
> だれもC++の知識が必要だとか言ってないのに何を言ってるんだよ
> しかも勝ち負けとか
> >>916が言う様に引っ込みつかなくなってるんだろうなw
…で、玉砕してるのに何度も繰り返すのは低能によくある行動

>>950
ボコられてる事すら理解できてないんだろうな…
理解力に致命的な欠陥があるんだろう
レス数が950を超えています。1000を超えると書き込みができなくなります。

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