C言語なら俺に聞け 162 at TECH
[2ch|▼Menu]
[1からを表示]
50:デフォルトの名無しさん (ワッチョイ 827c-RmzB)
23/11/04 00:06:31.86 nDDUhOSB0.net
>>49
何のためにシンボル使うのかわかってないな。
実際の値と値の持つ意味について考えたほうがいいぞ。

51:デフォルトの名無しさん (ワッチョイ 6dd7-HQPe)
23/11/04 00:27:05.12 uAZ656n/0.net
哲学には興味ない
なんのためにデバッガ使うかわかっているので充分だ

52:デフォルトの名無しさん
23/11/04 02:19:34.08 nDDUhOSB0.net
>>51
なんだ実際のデバッガ使ったことないのか。
普通はシンボルだけじゃなくて値も表示するんだが。

53:デフォルトの名無しさん (ワッチョイ 6dd7-HQPe)
23/11/04 09:05:55.97 uAZ656n/0.net
ずいぶん安い煽りに転じたな
表示される情報は最小限のほうがいいんだよ
仕事で使っていればそうなる

54:デフォルトの名無しさん (ワッチョイ 653d-2MVi)
23/11/04 10:09:07.16 lvandghk0.net
自分はデバッガ使う段階なら定数は具体値が出てくれた方がいいです

クロスコンパイル環境の構築からとか、Cならではの現場を辿って来た人と、今どきのGUIのデバッガが前提の人では話は合わなそう

マウスかざせば済むじゃんと思ってるのでは

55:デフォルトの名無しさん
23/11/04 11:08:29.93 dBvv25rw0.net
>>43にアンカうったら>>49で手間がどうこうって返ってきたんだがそういうのを安全って言うのか??
個人的には>>52と同感でマクロにしてもenumにしてもシンボル・値両方確認出来るもんだと思ってたから
どんな環境を想定して言ってるのかちょっとよく話が掴めないな

56:デフォルトの名無しさん
23/11/04 11:41:50.34 A3cqUl0FH.net
gdbなどのデバッガー使っていれば変数名と型と値は全て表示される
必要であれば配列は全ての要素を展開して表示も出来るけどな

57:デフォルトの名無しさん
23/11/04 11:48:12.60 4yCaeT2N0.net
printfでOK

58:デフォルトの名無しさん (アウアウウー Saa5-CWlg)
23/11/04 12:21:19.50 KPpuxUoxa.net
シンボルの方が意味が判って良いけどな
「マウスかざせば良い」はその通り
場合によっては watch 式

59:デフォルトの名無しさん
23/11/04 13:42:18.42 p2sqqR+o0.net
デバッグ段階で意味がいるのか?

60:はちみつ餃子
23/11/04 13:50:23.07 ocaBqo/v0.net
デバッガもその設計思想によるだろう。
ソースレベルデバッグなら言語の評価モデルに一致するのが自然だと思う。
そうなるとシンボルのほうが主役で、評価されれば値になるし一部は事前にわかる場合もある。
バイナリ寄りのデバッガなら
シンボル情報 (デバッグ情報) を扱えるものであってもまずそこにあるのは具体的な値であって、
値のほうをメインに見せる (シンボルは補助的な情報) のが筋に思える。

61:デフォルトの名無しさん
23/11/04 14:07:46.76 nDDUhOSB0.net
>>53
お前はアドレスさえわかれば関数名も変数名も不要なんだろうな。
俺はソースレベルデバッグを想定してたけどお前は違うの?

62:デフォルトの名無しさん
23/11/04 14:20:50.41 nDDUhOSB0.net
>>54
Cのソースレベルデバッガはgdbとそのラッパー(dddとかKDEのkdebug)しか使ったこと無いな。
お前は何使うの?gdb以外のデバッガにはちょっと興味あるかも。
あと、いつのまにかデバッグの話にすり変わってるけど、元は >>40 で *コード書くとき* の話だからな。
>>41 のせいだな。

63:デフォルトの名無しさん
23/11/04 15:58:28.43 lvandghk0.net
例の人ですか?

64:デフォルトの名無しさん
23/11/04 19:42:10.24 Q+jfxr6/0.net
>>62
スレを私物化してないか?

65:デフォルトの名無しさん
23/11/04 21:41:26.73 W1fOq5zR0.net
Cは単純だからぽいんた辺りで躓かない限り特に疑問は生まれずスーっと大脳皮質に浸透していく
それに比べて自称モダン言語の気持ち悪さよ
Cが無かったらプログラミングなんてやってなかったろうな

66:デフォルトの名無しさん
23/11/04 21:47:47.71 vTgEadDD0.net
Cも関数ポインタとかたいがいきしょいぞ

67:デフォルトの名無しさん
23/11/04 21:53:04.57 W1fOq5zR0.net
Cの関数ポインタはそれ以上でもそれ以下でもない
セキュリティが緩い頃は関数ポインタを駆使すれば関数型言語で言う所の関数のファーストクラスも実現できた
この時やはりコードとデータは分かれているべきと判りみ
と同時にオブジェクト指向は間違った思想と気付く

68:はちみつ餃子
23/11/04 21:57:40.47 ocaBqo/v0.net
少なくとも宣言については無茶苦茶な文法だけどな。

69:デフォルトの名無しさん
23/11/04 22:08:52.30 vTgEadDD0.net
C++になると更にきしょいメンバ関数ポインタがあるが

70:デフォルトの名無しさん
23/11/04 22:36:43.09 vTgEadDD0.net
#include <iostream>
using namespace std;
struct Hoge {
int hage_;
int mage () const {return hage_;}
};
void func (const Hoge &obj, int (Hoge::*func) () const) {
cout << (obj.*func) () << '\n';
}
int main () {
void (*f) (const Hoge &, int (Hoge::*) () const) {&func};
Hoge hoge {10};
(*f) (hoge, &Hoge::mage);
return 0;
}
きめぇ

71:デフォルトの名無しさん
23/11/05 00:14:17.78 u007GASC0.net
次の仕様拡張で関数配列が導入されます(嘘)

72:デフォルトの名無しさん (アウアウウー Saa5-CWlg)
23/11/05 10:34:57.51 ol9bMVcca.net
>>59 とか
>>60 の後者の人とかは
ゲーマーか逆アセか改造チートでもしてんのかなと思う

73:デフォルトの名無しさん (ワッチョイ 2e63-sdYh)
23/11/05 10:45:42.91 u007GASC0.net
定数はともかく変数の値の変化を監視するとなれば話は変わりますよ

74:デフォルトの名無しさん (ワッチョイ c191-HQPe)
23/11/05 10:52:46.61 dHgdjFj00.net
>>66
単に機種依存なくしてユニバーサル化したアセンブラだからキモいも何もない
感覚的に受け付けないという方はもうすぐAIで自然言語でプログラムできるようになるからそれまで待てばいいじゃん

75:デフォルトの名無しさん (アウアウウー Saa5-CWlg)
23/11/05 11:02:20.21 ol9bMVcca.net
>>70
こう描けばそこまでキモくない
#include <iostream>
using namespace std;
struct Hoge {
int hage_;
int mage () const {return hage_;}
};
void func (const Hoge &obj, int (Hoge::*p) () const) {
cout << (obj.*p)() << '\n';
}
int main () {
void (*f) (const Hoge &obj, int (Hoge::*p) () const) = func;
Hoge hoge {10};
f(hoge, &Hoge::mage);
return 0;
}

76:デフォルトの名無しさん
23/11/06 13:51:35.97 4BOQTpQoa.net
>>75
using使えよ

77:デフォルトの名無しさん
23/11/08 13:50:08.70 ySVrNoqw0.net
C++の話はスレチ

78:デフォルトの名無しさん (ワッチョイ 4279-ztC3)
23/11/08 19:54:11.21 5o5qiXKK0.net
その言葉が聞きたかった

79:デフォルトの名無しさん
23/11/12 06:38:57.26 fPCCehcM0.net
TikTok LiteでPayPayやAmazonギフトなどに変換可能な4000円分のポイントをプレゼント中!
※既存TikTokユーザーの方はTikTokアプリからログアウトしてアンインストールすればできる可能性があります
1.SIMの入ったスマホ・タブレットを用意する
2.以下のTikTok Litのサイトからアプリをダウンロード(ダウンロードだけでまだ起動しない)
URLリンク(lite.tiktok.com)
3.ダウンロード完了後、もう一度上記アドレスのリンクからアプリを起動
4.アプリ内でTikTok未使用の電話番号かメールアドレスを使用して登禄
5.10日間連続のチェックインで合計で4000円分のポイントゲット
ポイントはPayPayやAmazonギフト券に変換可能!
家族・友人に紹介したり通常タスクをこなせば更にポイントを追加でゲットできます。

80:デフォルトの名無しさん
23/11/12 08:32:02.96 d94Xl3Lo0.net
>>79
おー、これはワクワクするな

81:デフォルトの名無しさん
23/11/12 08:34:12.27 GHx2Prj80.net
>>80
アホ!
1レスくらい間にはさまないとリアリティが出ないだろw

82:デフォルトの名無しさん
23/11/12 08:51:33.78 It/c5vypM.net
ここまで自演

83:デフォルトの名無しさん
23/11/13 22:12:34.37 6eyhepdG0.net
はじめてのCってタイトル狙ってるよね?

84:デフォルトの名無しさん (ワンミングク MMdf-P3L0)
23/11/14 12:53:07.86 W6BGRK+OM.net
なんかドキドキする💗

85:デフォルトの名無しさん (ワッチョイ 1f10-Zoup)
23/11/14 15:40:13.41 Pq1b8U9m0.net
>はじめてのC
数十年前からの定番ネタだよね・・・今の中年向けの・・・。

86:デフォルトの名無しさん (ワッチョイ 1ff0-Gf4c)
23/11/14 15:56:04.92 B1tltd4R0.net
お前らはAの経験もないだろ

87:デフォルトの名無しさん
23/11/14 17:17:03.46 Qm0S65Zf0.net
小さく投げAするときも左利き。

88:デフォルトの名無しさん
23/11/14 17:23:51.01 0+a8UjLX0.net
消えたD言語もw

89:デフォルトの名無しさん
23/11/14 17:24:41.49 ehFVRHwha.net
APLは経験ないな

90:デフォルトの名無しさん
23/11/14 17:26:26.82 juKbspbB0.net
魔球は魔球はハリケーン♪

91:デフォルトの名無しさん (ワッチョイ 7fad-beIL)
23/11/15 02:42:58.51 FfQCTRFi0.net
>>90
あなたの年齢は50歳以上ですね。

92:デフォルトの名無しさん
23/11/16 19:17:29.74 j+PNeGK90.net
Cタ「バルス!」

93:デフォルトの名無しさん
23/11/16 20:52:49.80 oCahIYzp0.net
C名「歌舞伎町の女王」

94:デフォルトの名無しさん (ワッチョイ 465f-jMfl)
23/11/18 16:08:05.16 rSBossZH0.net
今はABCって言っても通用しないよ

95:デフォルトの名無しさん
23/11/18 17:12:35.80 gr23gvrO0.net
>>94
音階に倣って「イロハ」だったりするのかな。
プログラミング言語ハとか、ハ++とか、ハ長調とか。

96:デフォルトの名無しさん
23/11/24 17:31:57.03 yKOVmI8Pd.net
三等車か

97:デフォルトの名無しさん (ワッチョイ a7bb-ayIT)
23/11/25 04:21:32.09 qagB2RQA0.net
Cの関数ポインタに慣れてしまってたんなに奇天烈に見えてたのに今じゃ可愛く見える

98:デフォルトの名無しさん (ワッチョイ 5fad-1+JT)
23/11/25 04:36:14.81 D3zQdbUT0.net
  ∧__∧
 (´∀`)
  (⊃⌒*⌒⊂)
  /_ノωヽ_)

99:デフォルトの名無しさん (ワッチョイ 7f63-YwKO)
23/11/25 10:00:22.54 NdoBt+NA0.net
目標をせんたーに入れてスイッチ

100:デフォルトの名無しさん
23/11/27 08:24:12.52 554QjvZVd.net
左辺値と右辺値のことがよくわからない
char *cp = "abcdefgの"abcdefg"は値を変更できないのに、
char cp[] = "abcdefg"の"abcdefg"は値を変更できる

101:はちみつ餃子
23/11/27 09:01:26.52 HtoHgn5y0.net
>>100
それは左辺値/右辺値とは関係ない。
「リテラルを書き換えようとしたら未定義」というルールが関与してる。
前者の場合は文字列の場所を示すアドレスが cp に格納されているので
cp が指す先というのは文字列リテラルだが
後者の場合は確保された配列を初期化子の文字列で初期化するという理屈なので
配列と文字列リテラルとは別の実体を持ち、リテラルではない配列を書き換えることは問題にならない。
初期化子として文字列が出てくるときは初期化の文法としてちょっと特例があるのと
(文字列を含む) 配列は暗黙の型変換で勝手にポインタに変換される特例があって
そういう変則的なルールの積み重ねが分かり難い要因だと思う。
リテラルは書き換えたら駄目なのに型の上では文字列リテラルに const はつかない (C++ では const が付く) ので
ごく単純な場合を除くと書き換えをコンパイラがコンパイル時にエラーとして検出できないこともある。
なるべく (前後の事情によっては出来ないこともあるけど) 変数には const を付けておくのが良い作法だと思う。
const char *cp = "abcdefg";

102:デフォルトの名無しさん
23/11/27 09:03:50.85 7/k6/GSga.net
char *cpa = "abcdefg;
char cpb[] = cpa; // 出来ない
char cpc[] = "abcdefg";
char *cpd = cpc; // 出来る & abcdefgの中身も描き替え出来る

103:デフォルトの名無しさん
23/11/27 11:14:55.99 zMN468VW0.net
「大前提で文字列リテラルは書き換えたらダメ」があって
初期化と代入が同じ記号の = で行われてる
配列での代入操作は暗黙で先頭のポインタを渡す一方で
配列の初期化はあたかも複製をとったような形になる
ここらへんにややこしさがあってめぐりめぐって1行目にヒットする

104:デフォルトの名無しさん
23/11/27 11:25:24.57 554QjvZVd.net
>>101 ご親切にありがとうございます。標準的な本にもかいてあることを聞いてしまいました。

105:デフォルトの名無しさん
23/11/27 12:06:42.49 65C4jQRRF.net
ポインタと配列(の先頭番地)は同じように使えるがまったく別のもの
>>102の例だとsizeof(cpc)は8で
sizeof(cpa)はポインターサイズ

106:デフォルトの名無しさん
23/11/27 12:39:47.73 zMN468VW0.net
"abcdefg"[2] = 'C'; これがNG

107:デフォルトの名無しさん
23/11/27 19:49:45.68 /cbu4sL+0.net
>ポインタと配列(の先頭番地)は同じように使えるがまったく別のもの
まったく別と言い切ってしまうのはちょっと語弊があるように思う
言い換えれば配列はアドレスが変更できないポインタとみなせる
後は参照先のメモリ領域が書き換え可能かそうでないかの違いでしかない

108:デフォルトの名無しさん
23/11/27 19:53:12.61 iryvQ0lx0.net
配列名は単に文字列が格納されている場所に付けられたラベル

109:デフォルトの名無しさん (ワッチョイ 7f6a-l0Ve)
23/11/27 22:43:46.81 LIfK37a60.net
>>108
上で触れられているようにサイズ情報も持ってる

110:デフォルトの名無しさん
23/11/28 08:18:33.76 0HFLSmnDd.net
>>109
それは別に配列だからってわけじゃない。

111:はちみつ餃子
23/11/28 09:29:06.38 mRTkdYl90.net
配列の型は配列型だ。
char cpc[] = "abcdefg";
とあればこのときの cpc の型は char[8] をもつ。
式中に配列型の式が現れた場合には sizeof か & のオペランドであった場合を除いてその配列の先頭要素を指すポインタ (この場合は char*) に暗黙に型変換される。
変換が適用されればポインタだし、適用されない場面では配列。
配列自体は左辺値だが変更できる左辺値 (modifiable lvalue) ではないので代入演算子の左辺に現れることはできない。
配列を型変換を適用して出来るポインタは左辺値ではないのでやっぱり代入することは出来ない。

112:デフォルトの名無しさん
23/11/28 10:56:51.80 vcMwjchf0.net
え?左辺値に出来るやん

113:デフォルトの名無しさん
23/11/28 15:19:32.77 87HNLOa+0.net
型の話って、実は結構難しいというか深いよね…
型を認識するプログラム作ってみるとわかるんだけど
「~のポインタである」と
「~の配列である」を同じ情報量では扱えなくて
「~の配列(要素数n)である」としないとだめなの
ポインタである ことは1ビットで保持できるのに、配列である は要素数があるから必要なビット数がやたら多いのよ

114:デフォルトの名無しさん
23/11/28 18:36:50.58 0ouam6Fz0.net
((char*)cpc)++ で cpc[0] が 'b' を指すように移動できるの?
これがポインタが左辺値になってるって意味の理解でOK?

115:デフォルトの名無しさん
23/11/28 19:17:29.83 7gZuadd+0.net
++は無理

116:デフォルトの名無しさん
23/11/28 19:34:06.06 7TmihfNz0.net
アセンブラで考えるとよくわかる
cpa:
.dw cpa_static
cpa_static:
.db 'abcdef',0
cpc:
db 'abcdef',0
こんな感じになるだろう
cpaをインクリメントするのが可能だがcpcをインクリメントするのは無理なのがわかるだろう
cpcはアセンブル後には値がなくなる固定値でcpaは領域が確保されてる変数だから

117:デフォルトの名無しさん
23/11/28 19:42:59.12 7gZuadd+0.net
>((char*)cpc)++
こんな風な事をしたいなら、
*(char*)cpc+i
これでどうだろうか
cpcは固定値で、加算も減算も出来ないが、その位置からのオフセットならとれる
でも、ふつうの人は cpc[i] こうするだろう

118:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-d+hN)
23/11/28 20:11:54.43 mRTkdYl90.net
>>114
代入可能であるためには左辺値であることは必要条件なのだけれど十分条件ではない。
配列が代入の対象になりえないにも関わらず
(modifiable という概念を導入してまで) 左辺値という扱いにしていることからもわかるように、
代入できるかどうかで左辺値かどうかは語れない。
左辺値でも代入できないことはある。

右辺値はどこかに代入しない限り捨てられる (その式を超える寿命を持つことはない) という性質があるので
逆にそうでないものは左辺値という扱いにしないと辻褄が合わないからこうなってるんだと思う。

119:デフォルトの名無しさん (ワッチョイ 5fdf-2qxF)
23/11/28 20:38:05.06 h0hB0aZz0.net
>>112
>>118で「配列が代入の対象になりえないにも関わらず」なんて言い方してるくらいだから
多分左辺値とか右辺値がなんなのかよく分かってないんだろう
まあいつも規約をだらだら載せてるだけだけのコテだしね

120:デフォルトの名無しさん (アウアウウー Sa0b-6V65)
23/11/29 06:07:26.12 n75oaT1ga.net
なんでcpcを++したいと思うんだろ

121:デフォルトの名無しさん
23/11/29 07:30:00.42 Dj4oipus0.net
左辺値かどうかの簡単な切り分けだと思っただけで
そういう欲求はない

122:デフォルトの名無しさん
23/11/29 11:41:18.63 5J3ZheQvd.net
>>111 正確には、配列名のことをいっているんでしょ?

123:デフォルトの名無しさん
23/11/29 11:43:26.36 5J3ZheQvd.net
でないと文章的につじつまが合わない

124:はちみつ餃子
23/11/29 12:08:25.16 sncgHuaJ0.net
何を言ってるのだかわからん。
代入演算子の左辺に配列が現れることは出来ないという説明
に納得いかない (できる状況があると思っている) ということ?

125:デフォルトの名無しさん
23/11/29 12:16:49.24 5J3ZheQvd.net
>>124 そういうことです

126:デフォルトの名無しさん
23/11/29 12:18:51.59 UMPQWy8o0.net
代入可能な左辺値一覧
○…代入可能な左辺値
×…代入可能な左辺値ではない
1 変数に代入 v=x ○
2 変数のアドレスに代入 &v=x ×
3 配列に代入 a[i]=x ○
4 配列の名前に代入(2に相当) a=x ×
5 ポインタ変数に代入 p=x ○
5 ポインタ変数のアドレスに代入 &p=x ×
7 ポインタ変数の参照先に代入 *p=x ○ ただし参照先が書き込み可能でなければランタイムエラー
理解できたかね?

127:デフォルトの名無しさん
23/11/29 12:25:45.50 5J3ZheQvd.net
>>126 まだまだ浅学な者で、3と4の違いが分かれば十分です

128:デフォルトの名無しさん
23/11/29 12:26:51.70 5J3ZheQvd.net
右辺値と左辺値に関しては

129:デフォルトの名無しさん
23/11/29 12:34:21.47 5J3ZheQvd.net
char ss[5];
char *p;
p = ss; 〇
p = &ss[0]; 〇
ss = p; ×
p = ss + 2; 〇
p = &ss[2]; 〇

130:はちみつ餃子
23/11/29 12:41:04.72 sncgHuaJ0.net
配列 a があるとき
a[i]=x
という式の左辺は配列に添字演算子を適用したもの (配列の要素) であって
これのことを「配列に代入」と呼ぶと語弊がある。

131:デフォルトの名無しさん (スフッ Sd7f-1fOb)
23/11/29 12:54:49.45 5J3ZheQvd.net
しかし、食べたらまずそうなコテハンですね('_')

132:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-d+hN)
23/11/29 13:01:54.89 sncgHuaJ0.net
最初はSCHEME餃子と名乗ってたけどSCHEMEスレが過疎ってて暇だから
CスレC++スレにも書く機会が多くて途中で変えた。
私としてはあり得なさそうな組み合わせの語を選んだつもりだったのだけど
はちみつを使った餃子のレシピはあるみたいだよ。

133:デフォルトの名無しさん
23/11/29 13:56:20.69 5J3ZheQvd.net
配列には確かに構造体のようにごっそり代入できませんね

134:デフォルトの名無しさん
23/11/29 14:07:08.49 5SldHabaM.net
構造体に入れてしまえば解決

135:デフォルトの名無しさん
23/11/29 15:10:46.39 K/pKiYoT0.net
126 の表現を借りるなら
 3 は配列の要素に代入
 4 が配列に代入
こういう意識だわ

136:デフォルトの名無しさん
23/11/29 15:15:32.07 UMPQWy8o0.net
結局てめーの日本語が気に食わないって話かよ
長文は読む気が失せるわー

137:はちみつ餃子
23/11/29 16:16:32.90 sncgHuaJ0.net
「配列は」という話をしているときに配列でなくする操作 (要素に対するアクセス) をすれば出来るみたいな話と混同されると困る。

138:デフォルトの名無しさん
23/11/29 20:22:44.16 odjcqh9C0.net
初心者のころ
char text[] = "Answer is _";
text[10] = 'A' + ans;
とか書こうとしてうろおぼえで
char *text = "Answer is _";
text[10] = 'A' + ans;
としたらエラーかワーニングになって
なんでできないんだよ!とずっと悩んでいたことがあるが
そういう話じゃないの?

139:デフォルトの名無しさん
23/11/30 06:41:39.94 yOmuxKyka.net
char a[] = "A";
char *p = a;
は別物(同じだと説明している入門書があるならクソ本)
&a[0] を a と省略出来るだけ
もちろん sizeof p と sizeof a[0] と sizeof a は違う

140:デフォルトの名無しさん
23/11/30 13:09:50.69 EuLMofdV0.net
>>139
もう少しで完全に理解できそうなので
ガンダムで例えてくれ

141:はちみつ餃子
23/11/30 14:54:30.13 3QI4e6Tt0.net
> &a[0] を a と省略出来るだけ
意味が同じなわけなので記法の上では省略と言えるんだけど
a が &a[0] のことを意味しているというわけではなく、
言語仕様上の理屈としては a のほうにプリミティブな定義があって &a[0] のほうが構文糖という扱い。
@ E1[E2] は (*((E1)+(E2))) と等価である
A & のオペランドが単項*演算子の結果の場合,*演算子も&演算子も評価せずに両演算子とも取り除いた場合と同じ
  (添字演算子の適用結果をオペランドとする場合も同様)
B 配列 (結果が配列型となるような式) は sizeof か & のオペランドであるときを除いて先頭要素を指すポインタに変換される
つまり &a[0] の場合を順番に当てはめるとまず &*(a+0) と同等と見做され、
&* は無かったことにされるので a+0 となり、 0 を足しても内容は変化しないから無視できて a と同じ。
そして a は配列の先頭要素を指すポインタに変換される。

142:はちみつ餃子
23/11/30 14:59:53.10 3QI4e6Tt0.net
(順序から言うと配列がポインタに変換されるほうが先だな……。 すまぬ)

143:はちみつ餃子
23/11/30 15:08:15.57 3QI4e6Tt0.net
配列 a は a と書くだけで先頭要素を指すポインタなので
&a[0] と書くってのは 0 を足すという要らんことをしているという扱いってこと。

144:デフォルトの名無しさん (ワッチョイ 5f79-/KuA)
23/11/30 20:20:41.06 4nwqW1NG0.net
>>140
pがザビ家でaがジオン公国そのものと言ったら判りやすいだろうか
ジオンはザビ家にNTRれたけど元のジオン・ダイクンが掲げた思想(長さとか)はNTRが完了した時点で失われた
その後出てきたアクシズ(ネオ・ジオン)はもっと酷くてジオンと言える部分はNTRしたザビ家の跡取りとその傀儡だけでジオンとは一体何だったのか語れる人物は一人もいない

145:デフォルトの名無しさん (ワッチョイ 47e7-xen6)
23/11/30 20:26:04.69 SvZ2/mZg0.net
>>143
そっちのほうが余計なギミックじゃない?
a[]のアドレスが欲しければ&aと書くだけでいいのに
aが自動的にa[]の先頭番地になってしまうからややこしい
ちなみにBASICだと配列と同名の単純変数が作れてしまいこれも今思うと無茶苦茶だった

146:デフォルトの名無しさん (アウアウウー Sa0b-6V65)
23/11/30 20:46:09.47 h/B+JtY5a.net
>>117
意味無いわ

147:デフォルトの名無しさん (アウアウウー Sa0b-6V65)
23/11/30 20:47:46.07 h/B+JtY5a.net
完全に理解した!!!

URLリンク(ideone.com)

#include <stdio.h>

#define N 3

int main(int argc, char **argv)
{
char *hoge[] = {"abcd", "efg"};
char **hige = hoge;
char hage[][N] = {"ab", "cd", "ef", "gh"};
char (*fuga)[N] = hage;
char (*moga)[N] = {"ab", "cd", "ef", "gh"};
printf("%zd %s %s\n", sizeof(hoge), hoge[0], hoge[1]);
printf("%zd %s %s\n", sizeof(hige), hige[0], hige[1]);
printf("%zd %s %s %s %s\n", sizeof(hage), hage[0], hage[1], hage[2], hage[3]);
printf("%zd %s %s %s %s\n", sizeof(fuga), fuga[0], fuga[1], fuga[2], fuga[3]);
printf("%zd %s %s %s %s\n", sizeof(moga), moga[0], moga[1], moga[2], moga[3]);
return 0;
}

説明してみ

148:デフォルトの名無しさん (アウアウウー Sa0b-6V65)
23/11/30 20:51:51.20 h/B+JtY5a.net
アンカ忘れた
>>140

149:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-zy57)
23/11/30 21:26:27.48 3QI4e6Tt0.net
>>145
あくまでも言語仕様の理屈で言えばこうだという説明なのでその言語仕様が良いかどうかの意見は含んでないよ。
色々とアレな部分も多いってのは文句つけても仕方がないいまさらな話だし。

150:デフォルトの名無しさん
23/11/30 22:06:24.41 wy49Mw9yM.net
いやいや何を言っとんの?
利便性のためにそういう仕様にしてるんだよ
C書いてりゃさすがに分かんだろうよw

151:はちみつ餃子
23/11/30 22:36:56.23 3QI4e6Tt0.net
感覚的にはそんなに不自然には感じないんだけど
仕様の規則が変則的なのも確かなので
つまりは人間の感覚は不合理なものってことだ。

152:デフォルトの名無しさん
23/11/30 22:41:39.63 0Cr+jEwb0.net
>>147
%zd は知らなかったわ。 勉強になった

153:はちみつ餃子
23/12/01 00:42:09.23 U5xjJXbM0.net
sizeof の結果の型は size_t で、
size_t は符号なし整数というだけしか規定されていない処理系定義なんだけど
unsigned int や unsigned long int の別名として定義されていることが多いせいで
それをあてにした形で説明している資料は割とある。

154:デフォルトの名無しさん
23/12/01 02:30:56.67 oKQshtme0.net
>>145
> a[]のアドレスが欲しければ&aと書くだけでいいのに
俺はそっちのほうがややこしいと思うけどな
むしろ*(a+10) を [] で表現するなら *a[10] みたいな書き方になるほうが、理解する上ではややこしくなかったかなとは思うけど(使う上では不便)
[] って箱(マス)に見えるし、まあ直接箱の中身を示すものなのだなって覚えたけど

155:デフォルトの名無しさん
23/12/01 05:52:03.14 sCbOzpGc0.net
誰が誰なのかよく分からんけど、キッズが来て荒れた、という話ですか
インデックスアドレッシングを [ ] 記号に当てただけと思うけど、そんなに難しいかね

156:デフォルトの名無しさん
23/12/01 05:55:20.08 sCbOzpGc0.net
型の話かと思ってたら、いつの間にか 入門者がポインタを理解できない話 になった印象

157:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-d+hN)
23/12/01 14:51:35.53 U5xjJXbM0.net
>>145
配列 a に &a としたときに得られるのは配列を指すポインタであって配列の先頭要素を指すポインタではない。
(型が違う。 アドレスを数値として見たら同じはずだけど。)

多次元配列にアクセスするとき (添字演算子を重ねて適用するとき) に仕様の通りに解釈していくと配列と先頭要素が都合よく切り替わって最終的にポインタ演算になるのが実に上手いこと出来てる。
配列の要素にアクセスするときの記法を現状のような形にするという前提でならなんだかんだでよく出来ている。

配列に & を付けたら配列を指すポインタになるというのは例外的ではない普通の挙動だからそこに別の意味を割り当てるならそれもやっぱり変則的なややこしい挙動ってことになってしまうよ。

158:デフォルトの名無しさん
23/12/01 19:03:26.87 Ga+233FE0.net
>>157
ポインタ完全制覇でよーく理解できました。
20年以上やってきて配列へのポインタは一度だけ出番がありました。

159:はちみつ餃子
23/12/01 19:23:36.92 U5xjJXbM0.net
>>158
プログラマが直接的に書く機会はあんまりないだろうけど、
暗黙には頻繁に表れていてこのルールがないと上手いこと機能しないって話。
#include <stdio.h>
int main(void) {
int foo[2][3] = {
{1, 2, 3},
{4, 5, 6}};
printf("%d\n", foo[1][2]); // ふたつの座標みたいに見えるけど
// 式を各段階に分解すると……
int(*bar)[3] = foo; // 配列を指すポインタは出てきてる!
int *baz = bar[1];
int qux = baz[2];
printf("%d\n", qux);
}

160:デフォルトの名無しさん (ワッチョイ 65d3-WD8q)
23/12/05 07:30:58.43 72+QzLj/0.net
c言語初心者です
質問させてください

FILE *fpという宣言の「FILE」にどういった役割があるのでしょうか
*fpは関数によってどこを読み書きするかを指定するためにアドレスを格納することは分かるのですが
それならばint型のポインタで良いような気もします
プログラムを書く上でどうでもいい内容なのですが教えていただければ今日の寝付きが良くなる気がします

161:デフォルトの名無しさん (ワッチョイ eaad-snvD)
23/12/05 07:53:15.80 kkEdYaZP0.net
>>160
stdio.h の中身を見れば FILE がどう宣言されているか分かるのでは?

162:デフォルトの名無しさん (スフッ Sd0a-Oc+E)
23/12/05 08:16:33.53 64vzQPx0d.net
>>160 FILE構造体っていうことだけは、どの本にも書いてある。

163:デフォルトの名無しさん (ワッチョイ 66d6-8IwF)
23/12/05 08:26:33.63 Sjl8/rh40.net
実際UNIXのfile descriptorはintでWindowsのファイルハンドルHANDLEはvoid*だ。
こいつらはシステムコールによってカーネルモードで操作されるから中身が完全に見えないようになってる
それとは違って標準Cライブラリはユーザモードで動作するから
処理系依存で中身を操作してもいいように作ったのかもしれない

164:デフォルトの名無しさん (スッップ Sd0a-Cw2Y)
23/12/05 08:33:57.88 GHHZLCc/d.net
>>160
確かに構造体の中身を使わないかぎり何のポインタでもいいんだけど
間違えて他のタイプへのポインタと混同した時にエラーが出るから気づきやすい
それはけっこう重要だよ

165:デフォルトの名無しさん (ワッチョイ 65d3-WD8q)
23/12/05 09:00:17.71 72+QzLj/0.net
>>160です
普通の構造体の宣言とは異なり要素の記述はありませんが
「FILE」とは「ファイル構造体を使うよ」と宣言しているという意味で
そうしてstdio.h上のFILE構造体の要素に開いたファイルの情報が代入されていくということでしょうか?
「FILE」を記述せずにfopenで開こうとした場合構造体メンバのptrに代入されている数値が使えないのでfopenから戻り値が受け取れず正しく*fpに座標が代入されない
みたいな
そして開くだけならfopenでも開けてしまうとか

166:はちみつ餃子
23/12/05 10:08:56.47 z5PiblaY0.net
言語仕様的に見れば FILE はストリームを制御するのに十分な情報が入ったオブジェクト型であることと、
アドレス (FILE 型のオブジェクトがある場所) に意味がある場合もあるから
オブジェクトをコピーして機能するとは限らないという程度のことしか書いてない。
FILE にどのような情報が格納されているのかといったことや
詳細な仕組みはホスト環境の事情に合わせて処理系の裁量で決めてよい部分なので、
具体的にどうなっているのかは各実行環境・開発環境ごとに違う。
特に環境依存の細かい部分に立ち入って制御をしたい事情があるのでない限りは
fopen が「なんらかの方法」で FILE 構造体を構築してそのアドレスを返すものであるということだけ知っていれば
普通のプログラマにとって十分なように出来ている。

167:デフォルトの名無しさん
23/12/05 10:36:22.34 NYBtRI3Y0.net
>>165
3行目から4行目の理解で大体あってるよ
それ以降は何言ってんのか分かんねーから全部アタマの中から破棄していいよ
正確にはFILEってのは抽象データ型であんたは構造体って言ってるけど構造体かどうかは分からんし使う側は知る必要もない
提供者がわざわざ抽象型にして使い手側の負荷を下げてくれるとこを中身がどうとか役割がどうとかさぐんのは筋が悪いんだよ
使えって言われてんだから何も考えずにだまって使えばいいよ

168:デフォルトの名無しさん
23/12/05 11:08:08.12 h96fo3nj0.net
FILE構造体ってOS毎に変わるし、コンパイラ実装でも又変わってた様な気がする

169:デフォルトの名無しさん
23/12/05 12:35:58.10 4VzMioa/0.net
FILE*経由だとバッファリングされるから、バッファーのポインタとそこに含まれてるデータサイズも含んでいるだろう
そもそもファイルのシーク位置も含まれてる
まとめると
・ファイルディスクリプターやファイルハンドル
・シーク位置
・バッファー(ポインタ、サイズ、含まれてるデータサイズ)
となるかね

170:デフォルトの名無しさん (アウアウウー Sa21-wVFe)
23/12/05 15:39:55.92 QJai9ytva.net
>>160
void *hoge = (void *)fopen("hoge", "wb");
fprintf((FILE *)hoge, "hoge\n");
fclose((FILE *)hoge);

171:デフォルトの名無しさん (ワッチョイ 71cf-L1V1)
23/12/05 17:31:14.53 4VzMioa/0.net
FILE*互換の自前のストリームを実装できれば便利なんだがなぁ
継承が無いから、構造体に自前の関数をセットして、何らかの登録関数に渡す感じになるだろう

172:デフォルトの名無しさん (JP 0Hf9-8IwF)
23/12/05 17:40:17.96 oSX0a7FoH.net
fopencookieとかfunopen

173:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-By03)
23/12/05 17:48:30.74 z5PiblaY0.net
パイプのインターフェイスをストリームとして開くことが出来るから
適当なスレッドを開いてパイプの受け取り口で受け取った情報を好きなように加工するようにすれば、
パイプに書込む側ではストリームに書き込んだらいい感じに処理してくれるように見える。

というのを Windows でやっているのをどっかで見た。

174:デフォルトの名無しさん
23/12/05 18:11:37.45 GHHZLCc/d.net
>>165
開くだけで何が楽しいんだ?
読み取りも書き込みもクローズもできない
exitで自動的にクローズはされるけど…
>>163
HANDLEはポインタではなくただの整理券番号で実体は整数値だ
しかしWindows SDKでは「架空の構造体へのポインタ」として定義されているので例えばウィンドウハンドルをファイルハンドルと混同するとType mismatchエラーになる
これはかなり有用な仕組みでC言語が仕様に組み込んでほしいくらい

175:デフォルトの名無しさん
23/12/05 23:44:52.07 9c748LJ40.net
ソケットディスクリプタってファイルポインタに転生できる?

176:デフォルトの名無しさん
23/12/05 23:48:43.88 4UYj/sQ80.net
>>175
fdopen

177:デフォルトの名無しさん
23/12/06 08:34:18.09 hjosWl9s0.net
>>160です
皆さん大変参考になりました
今日はよく眠れそうです

178:デフォルトの名無しさん (スフッ Sd0a-nvfk)
23/12/06 12:07:25.67 dR0trs3yd.net
対策このままなら再発しそうね
URLリンク(japan.zdnet.com)

179:デフォルトの名無しさん
23/12/06 16:09:22.53 JLoh059d0.net
仕事なくなったら困る人が大勢いるし

180:デフォルトの名無しさん
23/12/06 20:24:47.29 tBrgYtLt0.net
free(NULL) は許されるのに
fclose(NULL) は許されないんよな

181:デフォルトの名無しさん
23/12/06 21:05:20.14 gHtrZlY5a.net
>>180
さらにfflush(NULL)は許されるという一貫性の無さ

182:はちみつ餃子
23/12/06 21:19:13.20 +44Bjs460.net
fflush の場合は全てのストリームを対象とするという特別なフラグとして NULL を活用しているので無効なポインタとしての NULL とは事情が違う気がするね。
それにしたってNULL を多義的に使っているという意味では一貫性はないけど。

183:デフォルトの名無しさん
23/12/06 21:23:39.94 bAVe0RWP0.net
free(NULL)は、おバカなマの為に特別に許容したんだろ

184:デフォルトの名無しさん
23/12/07 02:17:45.58 NYiehhGh0.net
以前ネットでおすすめされていた「苦しんで学ぶc言語」の内容をしっかり理解する段階まできたのですが、次は何をすれば良いのでしょう。
猫でも分かるプログラミングも読んでみたのですが仕様が古すぎてトレースできないのと、私には作者さんの文章の作りが合わず困っています。
まずは簡単なソフトを作りながら学べればと思います。
入門書の次に読めるような本と、そこからアプリケーション開発のイロハが分かる本やサイトを教えていただけないでしょうか。

185:デフォルトの名無しさん (ワッチョイ ea79-4utE)
23/12/07 07:17:00.47 Y9iRVwaI0.net
↑みたいなのって目的ないのかね
今後C言語で特に何かやりたい事がないなら別に何もする必要ないよ

186:はちみつ餃子
23/12/07 08:27:05.09 wi0prF2i0.net
Cで現実的なアプリケーションを作るならホスト環境 (OS など) の事情は無視できないし、具体的な目標なく道筋は決まらないと私も思う。
何の情報もない他人に何かを勧めるというのはしづらい。
目標があるならその分野の既存のコードを「読む」という体験はためになるかもしれない。
実際のコードを見て意味がわからない部分があれば学習が必要な部分だというとっかかりになる。

187:デフォルトの名無しさん (ワッチョイ 6646-wNAC)
23/12/07 09:28:19.84 ++8K4NmJ0.net
>>184
> 「苦しんで学ぶc言語」

というのは、これ↓ ?

URLリンク(9cguide.appspot.com)
> 苦しんで覚えるC言語

であれば文法解説のようなので、ファイル操作をしてはどう?
cat コマンドを作るとか。

188:デフォルトの名無しさん (ワッチョイ 65ff-WD8q)
23/12/07 10:04:58.60 NYiehhGh0.net
>>186
Windowsソフトを制作して当方の業務を効率化できればと考えています。
「既存コード」を読むですか、なんだか英語学酒のようで気が滅入りますね>
>>187
失礼しました。「覚える」でしたか。
ファイル操作がどこまでを指すのかわかりませんが高低水準入出力はすでに可能です。

189:デフォルトの名無しさん (ラクッペペ MM3e-8Sbt)
23/12/07 10:23:42.82 aHfAXzyRM.net
業務効率の向上が目的ならC言語は回り道すぎる
他の言語選んだ方がいい気がする

190:デフォルトの名無しさん (ワッチョイ 1163-8qzv)
23/12/07 10:31:24.83 HPax2zCP0.net
ファイル操作の課題出してあげようか
指定した二つのDirにあるファイルを同期させる
単にコピーするのではなく、タイムスタンプの新しいものだけをコピーする
新しいSubdirできていたら、中味があればDirごとコピーする
とりあえずは、新しく作られてファイルの同期まで、
削除については考慮しなくて良い

191:デフォルトの名無しさん (ワッチョイ b501-sZSb)
23/12/07 10:39:50.34 3PWWuEZS0.net
>>188
>Windowsソフトを制作して当方の業務を効率化できればと考えています。
早速これに取り組んだ方が良い
実用するものを作る方がモチベになる

192:デフォルトの名無しさん (スプッッ Sdea-GtvU)
23/12/07 11:21:46.78 6u4iKMo7d.net
C言語のスレッドで言う事じゃないがC言語以外の生産性の高い言語を学んだほうがよさそう

193:デフォルトの名無しさん
23/12/07 11:56:53.00 QzDrEJVi0.net
>>184
CはOSのAPIを直接叩けることがメリットでもあるので、Linuxのプログラミング本を読んでコード書いてみるのが一番良いだろう
マルチプロセス、マルチスレッド、ソケットとか覚えるべき事は沢山ある
Cでやれば根本から理解出来る

194:はちみつ餃子
23/12/07 12:04:11.70 FWY3NSUg0.net
(事務作業などの?) 業務効率化が目的なら Power Automate Desktop の活用を考えた方がいいと思う。
効率化の最初の段階は解決すべき問題を見つけることで、これをきちんと一度で洗い出すのは大抵の場合に出来ない。
雑に作って運用しながら改善するという手順をとるのがのぞましいが、 C で書くとそういう柔軟な体制がとりづらい。

195:デフォルトの名無しさん (ワッチョイ 9a2b-ntmn)
23/12/07 13:30:05.55 zYUoekf60.net
「なにを作りたいのかが大事」ってのは良く分かるんだけど、普通の人が作りたいものって大抵Cじゃない方が…ってなっちゃうんだよな

196:デフォルトの名無しさん (ワッチョイ 65ff-WD8q)
23/12/07 13:42:19.21 NYiehhGh0.net
>>90
そういった事もできるんですねー
>>191
取り組みたいのは山々なのですがuiの作り方からわからないので入手できるバーションで解説されている書籍が欲しいところです。
>>192
基礎を大切にしたいのでcをはじめのうちは使っていきたいと考えています。
>>193
仰る通り根本を理解できればと思います。Linux本ですね。可能であれば簡単なものでおすすめを添えていただけないでしょうか。
>>194
グラフィック系のソフトを使う上で不便なところを楽したい、と言いますか
とにかく画像表示や文字列表示から進めていきたいと考えています。
前述の通り基礎を理解したいので可能であればcで作成したいのです。

197:デフォルトの名無しさん (ワッチョイ 3514-I4o8)
23/12/07 13:42:44.77 P4JhXVL60.net
WindowsアプリならCじゃくて、せめてC++にしておけ

198:デフォルトの名無しさん (ワッチョイ 6aa0-0M9k)
23/12/07 13:43:24.10 n9+uyfFo0.net
楽したい奴にはCは向かない

199:デフォルトの名無しさん (アウアウウー Sa21-wVFe)
23/12/07 14:18:01.05 wNl2TimYa.net
C++は変な癖がつく
Cの方が絶対良い

200:デフォルトの名無しさん (ワッチョイ b501-sZSb)
23/12/07 15:23:59.73 3PWWuEZS0.net
Cで全部書いてると大変だと思うよ
機能全部使わんでも良いからC++の方が現実的だよ

201:デフォルトの名無しさん (ワッチョイ 1163-8qzv)
23/12/07 15:31:37.34 HPax2zCP0.net
大変かどうかは、何を作るかによる

202:デフォルトの名無しさん (ワッチョイ b501-sZSb)
23/12/07 15:35:13.86 3PWWuEZS0.net
>>201
>>196を踏まえて大変だと思うよ

203:デフォルトの名無しさん (ワッチョイ 71cf-Gt6m)
23/12/07 16:19:14.82 QzDrEJVi0.net
>>196
自分はUNIX Cプログラミング(いわゆるライオン本)で勉強して、めちゃくちゃ為になったけど、さすがにこれは古すぎる
詳解UNIXプログラミング 第3版は間違いのない名著
ふつうのLinuxプログラミング 第2版はLinux向けだし初心者向け
Cで仕事をするようにはならないかもだけど、「ふつうの~」を理解出来て自分のものにすることがCを学ぶ意義だな

204:デフォルトの名無しさん (ワッチョイ 66ab-XaJC)
23/12/07 16:23:44.20 5AmCTrxW0.net
>グラフィック系のソフトを使う上で不便なところを楽したい
ソフト側でスクリプト等がサポートされてなければ
できることは連続するショートカットを 1プッシュでまとめて出す
キーロガー&再生系とか Joy2Key みたいなキーコード送出系ぐらいしか思い浮かばん

205:はちみつ餃子
23/12/07 17:03:32.49 FWY3NSUg0.net
>>196
具体的に対象になってるソフトの名前は言える?
モダンな設計の Windows 用ソフトが外部から制御するために公開するインターフェイスは
Component Object Model の技術をベースにしていることが多くて、
高度な開発環境の補助を得ながら使う分には便利なんだが
C から使おうとするとすごく面倒くさい。 (出来なくはないけど。)
ソフトが外部に対してインターフェイスを公開するのではなく
制御用のスクリプト言語を内蔵している場合もあるので
C でのプログラミングに詳しくなってもあまり役に立たないこともある。
もしも外部に対してインターフェイスを用意していないなら
ボタン操作のイベントを発生させるとかして制御する (つまりまさに人がする操作を代行させる) ということも可能だが、
それを可能にするような基礎技術というか Windows の動作モデルを理解したいのなら
「猫でもわかるWindowsプログラミング」はそれなりに有用だと思うよ。
私は書籍を読んだことは無いけどウェブ版は Windows がイベントを伝播させて操作させる構造を理解するのに十分な記述はある。
だけど、人が操作するときに Windows の中で何が起こっているのかを
初心者が根本から理解してきちんと使いこなせるまでになるハードルは割と高めなんだよ……。
Power Automate Desktop なら技術の根本を理解せずともそれが出来るようになってるし、
マイクロソフトが直接に提供していてしかも無料という神ソフトなのでオススメした次第。
UWSC とか AutoIt なんかも人気があるね。

206:デフォルトの名無しさん
23/12/07 17:15:58.47 ggcXWkJv0.net
関数のサイズというのは、関数の引数のサイズと同じと考えて良いのでしょうか?
中身に1万行使ってる関数があるとして、その1万行は関数のサイズとは全然関係ないんでしょうか?
構造体はなんとなく変数のバイト数の足し算なんだなってわかるけど、関数がピンとこないです・・・

207:デフォルトの名無しさん
23/12/07 17:18:59.29 Dmh4B19g0.net
プリプロセッサメタプログラミングを覚えてからc言語の開発は楽になったわ
前は同じようなデータ構造でたくさんモジュール作ってたからな

208:はちみつ餃子
23/12/07 17:34:07.95 FWY3NSUg0.net
>>206
関数をデータとして扱うことはないので「大きさ」は定義されない。
C の言語仕様的には「関数はオブジェクトではない」という扱い。
関数に対して呼び出し以外の操作をする方法はない。
関数ポインタで関数の場所を指すということは出来るが、
型システム的にちょっと特殊な扱いになっていて関数ポインタ経由で値を取り出したりも出来ない。
もちろん実際にはなんらかの形でメモリ上には存在するし、
長いプログラムは大きい可能性が高いけど。
実際にどうなってるのかは生成された機械語を見ればいいんでね。

209:デフォルトの名無しさん
23/12/07 17:41:37.50 VEE9aIzl0.net
>>206
質問文が謎すぎて、何を聞きたいのか解釈できない
関数のサイズって言ってるのがビルドしてできた実行ファイルのファイルサイズの事なら、コードの量が多ければ当然サイズは大きくなる

210:デフォルトの名無しさん
23/12/07 17:41:59.31 ggcXWkJv0.net
>>208
ポインタのアクセス条件でメモリのサイズ・型が明確になっていること
とあったので、関数ポインタもサイズや型が明確でないといけないなら
ちゃんとわかっとかないといけないと思ったのですが、関数の扱いはわかってる人から見ても特殊なんですね
ありがとうございます


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

187日前に更新/86 KB
担当:undef