C语言学习笔记 lesson14 函数
2016-09-30 19:25
351 查看
函数
函数是C语言的重要的组成部分,过程编程是将程序的执行过程一步步的分解成函数。分解成函数方便进行工程的管理,方便多次调用。
组成
函数名称 (C语言中不能重复)
参数 (函数中需要的数据)
返回值
函数参数的传递过程
main函数和 其他函数各有栈针。当函数经过return后,函数的栈会清空。所以函数执行完后,函数中的局部变量就会失效。
#include<stdio.h>
int Greater(int first, int second) 接收两个int参数,从外部将值传递到内部
{
if (first > second)
{
return first; 必须直接返回直接类型的数据
}
else
{
return second;
}
}
int main()
{
int bignum = Greater(10, 100);
return 0;
}
main函数反汇编
int bignum = Greater(10, 100);
002216FE push 64h 函数是通过栈来传递的
00221700 push 0Ah
00221702 call _Greater (0221221h)
00221707 add esp,8
0022170A mov dword ptr [bignum],eax
return 0;
0022170D xor eax,eax
esp
0x00D7FCE0 c8 fd d7 00 main的栈底
0x00D7FCF0 46 10 22 00 返回的地址
0x00D7FCEC 64 00 00 00 传递的参数 100
0x00D7FCE8 0a 00 00 00 传递的参数 10
函数反汇编
int Greater(int first, int second)
{
00221690 push ebp
00221691 mov ebp,esp
00221693 sub esp,0C0h
00221699 push ebx
0022169A push esi
0022169B push edi
0022169C lea edi,[ebp-0C0h]
002216A2 mov ecx,30h
002216A7 mov eax,0CCCCCCCCh
002216AC rep stos dword ptr es:[edi]
if (first > second)
002216AE mov eax,dword ptr [first]
002216B1 cmp eax,dword ptr [second]
002216B4 jle Greater+2Dh (02216BDh)
{
return first;
002216B6 mov eax,dword ptr [first]
002216B9 jmp Greater+30h (02216C0h)
}
002216BB jmp Greater+30h (02216C0h)
else
{
return second;
002216BD mov eax,dword ptr [second]
}
}
指针:特殊的数据类型
里面存储的是内存地址,使用了指针,传递的就是地址
相关文章推荐
- C语言学习笔记:14_内部函数和外部函数
- C语言学习笔记:14_内部函数和外部函数
- C语言学习笔记 lesson19 文件处理函数
- lua学习笔记14:函数多返回值
- 学习51笔记与一份从网上找的资料:单片机C语言中_nop_函数的使用及C语言的延时计算2010-
- C语言学习笔记-7.函数
- c语言学习笔记(8)——函数
- what's in string? c语言string类函数实现汇总 觉得都是学习使用指针的好例子(算是读书摘抄和笔记吧)
- C语言的学习笔记2-函数
- C语言学习笔记(三) 输入输出函数的基本用法以及运算符
- c语言学习笔记(8)——函数
- iOS开发学习笔记 2-6 C语言部分 函数及变量的作用域
- thinkCSpy学习笔记: Chapter 14 Classes and functions 类和函数
- C语言malloc,calloc,realloc,free内存分配函数学习笔记
- c语言 函数 学习笔记
- 学习笔记之14-返回指针的函数与指向函数的指针
- Oracle 学习笔记14 —— 函数
- C++ Primer学习笔记——$14 操作符重载、函数对象及类类型转换
- iOS开发学习笔记 2-9 C语言部分 内存分配函数 函数指针 指针函数 void*
- C语言学习笔记之常用的字符串处理函数