我很困惑!以下所有 printf 都是打印函数地址的正确方法吗?让我告诉你我的困惑。每次我运行所有这些 printf(即第一个 printf、第二个 printf 和第三个 printf)时,在输出中我得到 02D4 02D4 02D4 但是如果我删除或评论第一个和第二个 printf,当我删除第三个时,我得到以下输出 02BA printf 语句,我得到以下输出 02D0 再次取消注释所有这三个时,我得到: 02D4 02D4 02D4 为什么一个语句会影响其他 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;
}