我们一段代码来研究函数调用的过程.首先我们写一段简单的小程序: int sum(int c, int d) { inte = c + d; returne; } int func(int a, int b) { returnsum(a, b); } int main(void) { func(2,3); return0; } 通过gcc编译.在编译命令中要加上-g选项,这样在使用objdump反汇编时可以把C代码和汇编代码穿插起来显示,这样C代码和汇编代码的对应关系看得更清楚.…
今天下午写篇博客吧,分析分析c语言中函数调用的本质,首先我们知道c语言中函数的本质就是一段代码,但是给这段代码起了一个名字,这个名字就是他的的这段代码的开始地址 这也是函数名的本质,其实也就是汇编中的标号.下面我们会接触到一些东西 比如 eip 就是我们常常说的程序计数器,还有ebp和esp (这里是俩个指针,记得我们以前学8086也就一个sp堆栈指针)分别为EBP是指向栈底的指针,在过程调用中不变,又称为帧指针.ESP指向栈顶,程序执行时移动,ESP减小分配空间,ESP增大释放空间,ESP又称…
12天学好C语言--记录我的C语言学习之路 Day 2: 我建议大家每一天学习之前都仅凭记忆去敲前一天敲过的最后一个程序,或者敲前一天你认为最难最长的一个程序,如果一晚上的睡眠之后不看书还能敲的出来,那就非常不错了.至少这个程序你会记很长时间! 首先我们以一个程序敲开今天的学习.(program 2.1) //求1-1/2+1/3-1/4+...+1/99-1/100的值 /*//program 2.1 #include<stdio.h> int main() {     int sign=1…
12天学好C语言--记录我的C语言学习之路 Day 1: 刚刚入门C语言,那么肯定要先把什么是C语言和大家讲清楚,那么大家看下面一段程序(program  1.1): /*//program 1.1 #include<stdio.h>  //编译预处理指令,编译系统要求提供程序中有关函数的信息,而stdio是"standard input&output"的缩写(标准输入输出) //后缀.h的意思是header file(头文件) int main()    //定义…
没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. =====指针的概念======= 计算机中的所有数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如int占用4个字节,char 占用1个字节. 我们将内存中字节的编号称为地址或指针. 一切都是地址 C 语言用变量来存储数据,用函数来定义一段可以重复使用的代码,他们最终都要放到内存中才能供CPU使用…
一.编程语言与解释语言 1.程序的执行 a.解释:借助一个能试图理解程序的程序,使计算机按要求执行你自己写的程序 b.编译:将所写程序翻译为机器语言写的程序,使计算机按要求执行你自己写的程序 2.两者的关系: a.本质上无太大区别,个人喜好问题,都是程序的常用执行方式 b.语言本无解释/编译之分 c.各自的优势: 解释型语言有特殊的计算能力(以前认为慢,但后面随着硬件的发展,效率不是问题):编译型语言有确定的运算性能. 二.C语言发展历程 1.FORTRAN->BCPL->B语言(支持指针间接…
0.前言 我在上一篇文章中分析了 为什么 Python 没有 void 类型 的话题,在文章发布后,有读者跟我讨论起了另一个关于类型的问题,但是,我们很快就出现了重大分歧. 我们主要的分歧就在于:Python 到底是不是强类型语言? 我认为是,而他认为不是. 他写了一篇很长的文章<谁告诉的你们Python是强类型语言!站出来,保证不打你!>,专门重申了他的观点,但可惜错漏百出. 我曾有想法要写写关于 Python 类型的问题,现在借着这个机会,就来系统地梳理一下吧. (PS:在我写作进行到差不…
1.1 影响 Go 语言发展的早期编程语言 正如 "21 世纪的 C 语言" 这句话所说,Go 语言并不是凭空而造的,而是和 C++.Java 和 C# 一样属于 C 系.不仅如此,设计者们还汲取了其它编程语言的精粹部分融入到 Go 语言当中. 在声明和包的设计方面,Go 语言受到 Pascal.Modula 和 Oberon 系语言的影响:在并发原理的设计上,Go 语言从同样受到 Tony Hoare 的 CSP(通信序列进程 Communicating Squential Proc…
数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6.布尔型数据:bool 7.对象类型:object 8.二进制:binary 语言类型: 1.强类型语言:c++ c c# java 2.弱类型语言:js php 变量定义: 1.强类型语言:int a 2.弱类型语言:var a(var 可以存储任何类型数据) 变量赋值: var a=10 输出语…
抄自:http://my.oschina.net/apeng/blog/137911 目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3,网络资源 附录 一些有用的C语言网络资源: 一些值得关注及研究的C语言相关项目: 一些C语言编程时可以使用的工具软件,帮你提高代码质量: C语言编程规范编程标准: C语言编程电子书及教程: 在这里想比较系统的谈谈个人对C语言学习方法的理解.分别按照书籍.实验环境搭建.网络资源来分别介绍,希望能写的比较完整全面一些,给…