以下内容为自学笔记缺乏严谨性,如有错误和不足请大佬指正
(1)函数执行的基本过程?
函数调用把函数压入函数调用栈,函数执行结束,从函数调用栈中pop弹出
程序开始执行首先会把main函数压入栈,调用哪个函数再把那个函数压入栈,执行结束pop弹出,遵循栈的后入先出顺序,main函数第一个进最后一个出,如果一个函数里调用另一个函数,就是等被调用的另一个函数结束,才开始执行调用它的函数的剩余部分
(2)局部变量包括哪些?
函数在执行过程中声明的变量,函数的形参,存放在栈区,函数执行结束后自动回收
(3)函数名的特性及函数所在代码区的关系?
函数名字是一个地址,函数存放在代码区,函数名字是指向代码区函数的一个地址
(4)函数指针能执行函数的原理?
函数使用前需要有前置声明,这个声明的意义就是告诉程序函数的地址
所以如果有指针也可以指向代码区的函数,就可以通过函数指针找到函数在代码区的位置,并根据给的参数,进行函数的调用
通过函数指针调用函数有两种方式: 显示方式 隐式方式
int add(int a, int b) {
return a + b;
}
int main() {
int (*p1)(int, int) = &add;//形参不需要写名字
int (*p2)(int, int) = add;
printf("%d\n",(*p1)(1,2) );//显示方式
printf("%d\n",p2(1,2) );//隐式方式 推荐
return 0;
}