C语言:
1:过程语言,把执行过程分解成一个一个的函数,这样方便管理
2:方便我们多次调用,节约工程师的生命(不用一个函数写很多遍)!节约内存。
函数:
1:函数 名称
C语言中必须唯一,不可以重复。
2:参数可以使多种多样的,可以自己定义,函数中封装的是算法,当前算法需要用那些数据就可以把这些参数传进去,在算法中就可以取得到这些值,进行一步一步地计算。
3:返回值必须返回指定类型的数据!!!函数的参数是怎么传到函数内部去的,每个函数都可以认为是一个单独的个体,认为每个函数都拥有一个独立的栈,叫栈帧!一个函数无法方位其他函数的栈帧!一个新的函数执行完成之后(碰到return),函数就会将里面的栈(栈帧)清空,如果再次调用这个函数,就会再次申请栈帧,这样一来,函数里面的局部变量就会失效。
函数是通过栈来传递参数的,栈之间的地址是相通的,传递的并非变量本身,
他只是将这个需要传递的值放到eax里面,然后push了一个新的地址,仅仅值是一样的,里面要改变也只是改变的假变量。如果函数需要的并不是返回值,而是真实的需要改变传进来的变量,就需要传递指针!
函数的传递参数应该是指针,*p,调用的时候应该输入地址!这样在反汇编下,就会直接用lea取地址,把地址传递给了下一个函数。
这里第二个push的就是参数的地址值。被调用函数里面操作也要加上*。否则仅仅操作的是地址,而没有改变值。加*就是解出来,对内存进行操作。