就这种行为而言,为什么function pointer
行为类似于?我的意思是,让我们从将考虑和array pointer
的数组的情况开始。list[]
&list
list
char name[5]= "Eric",(*aptr)[5]=&name;
printf("%p,%p",*aptr,name); //BOTH ARE NUMERICALLY SAME
我们也可以将数组元素称为(*aptr)[1]
,(*aptr)[2]
等。我明白这里发生了什么。
但是为什么对函数同样有效呢?毕竟,“函数”本身并不是像数组那样由相似元素组成的连续内存块。考虑一下。
假设fptr
在我的程序中是一个函数指针。为什么打印时fptr
和给出相同的值?甚至是什么意思?我只知道我们可以使用它的指针 as或 as来调用一个函数,但那又是什么?*fptr
*fptr
(*fptr)()
fptr()
*fptr
#include<stdio.h>
void foo(){};
int main(void)
{
void (*fptr)()=foo;
printf("%p,%p",fptr,*fptr);
}
结果- 00401318 00401318