//数组、指针、函数、函数指针的内存布局.cpp
//2010.11.22
//vs2005
#include <iostream>
using namespace std;
void Function()//函数
{
cout<<"函数内存布局"<<endl;
cout<<Function<<endl;//0041112C
cout<<&Function<<endl;//0041112C
}
int main()
{
cout<<"指针内存布局"<<endl;
int *p1=NULL;//指针
cout<<p1<<endl;//00000000
cout<<&p1<<endl;//0012FF60
cout<<"数组内存布局"<<endl;
int a[2];//数组
cout<<a<<endl;//0012FF50
cout<<&a<<endl;//0012FF50
cout<<"函数指针内存布局"<<endl;
void (*p)();//函数指针
//*(int*)&p=(int)&Function;
p=Function;
cout<<p<<endl;//0041112C
cout<<&p<<endl;//0012FF44
(*p) ();
return 0;
}
结论:函数指针内存布局正如指针变量;函数的内存布局正如数组。即函数名和数组名仅代表该函数和数组的内存空间,并没给函数名和数组名分配空间。而给函数指针名和指针变量分配的内存空间,指向该函数和变量。