[2218] Re:C言語ポインタ完全制覇(第2版) Fig2-8
投稿者:Hiroyuki Naito
2020/01/24 17:39:26
ご回答ありがとうございました。
>①「ローカル変数result」と「退避したベースポインタ」を書く場所を1段間違え、
>②「ベースポインタ」の右の矢印「→」をつけ忘れる
onlineGDBというWeb上のCコンパイラで、コンパイルオプションをいろいろ試してist2-6と同じアセンブルリストが得られたので、本文に沿ってリストを追いかけてみて気づいた疑問点でした。
2.5.3までのところで、目からうろこ状態になってしまったのは以下の通りですが、今後もいろいろな発見がありそうなので期待しながら読み進めていきたいと思います。
(1)宣言のときの*や[](区切り子) は、式の中に現れる演算子の*や[]とは、まったくの別物。
(2)式の中では、配列は「その先頭要素へのポインタ」に読み替えられる。
(3)関数は、式の中では「関数へのポインタ」に読み替えらえる。
(4)関数funcへのポインタを格納するポインタ変数は、以下のように宣言する。
int (*func)(double);
(5)関数へのポインタを使用したサンプルプログラム:List2-3
(6)自動変数の領域は、関数を抜けたら解放される。