#include <stdio.h>
void Fun()
{
while (1)
{
printf("编程\n");
}
return;
}
int check()
{
int arr[] = { 1,2,3,4,5,6,7,8 };
arr[10] = (int)&Fun;
//注意:
// vc6中是arr[9] = (int)&Fun;
//vs2019中是arr[10] = (int)&Fun;
// vc6,最后一个数组成员地址距离返回地址间隔4个字节
// // vc6的变量是从ebp-4开始赋值
// vs2019,最后一个数组成员地址距离返回地址间隔8个字节
//vs2019的变量是从ebp-8,开始赋值
return 0;
}
void main()
{
check();
getchar();
return;
}
本文探讨了如何在C语言中通过数组和指针调用函数Fun,重点讲解了不同编译器环境下变量存储位置的变化,以及如何影响函数地址的计算。通过实例展示了VC6与VS2019中变量存储偏移的不同,以及对函数指针应用的实际效果。
5146

被折叠的 条评论
为什么被折叠?



