私は混乱しています!次のすべての printf は、関数のアドレスを出力する正しい方法ですか? 私の混乱もお伝えしましょう。これらのすべての printf (つまり、1 番目の printf、2 番目の printf、および 3 番目の printf) を実行するたびに、出力で 02D4 02D4 02D4 が得られますが、1 番目と 2 番目の printf を削除またはコメントすると、3 番目を削除すると出力 02BA としてフォローされます。 printf ステートメント、次の出力 02D0 を取得しています。これら 3 つすべてのコメントを解除すると、次のようになります。 02D4 02D4 02D4 なぜ 1 つのステートメントが他の printf 行の出力に影響するのですか これは実際には関数のアドレスではありませんか? s と &s はアドレスと同じ値を与えると聞いたことがあります (配列のように)。しかし、ここで、b も印刷しようとすると s と &s が影響を受ける理由がわかりません。ここで、b=s または &s です。
#include<stdio.h>
#include<conio.h>
int s(int);
void main()
{
int a=10,*b;
clrscr();
b=s(a++);
b=&s;
printf("%p\n",s); // 1st printf
printf("%p\n",&s); //2nd printf
printf("%p\n",b); //3rd printf
getch();
}
int s(int x)
{
return x;
}