深入了解C语言——函数的使用(实例)

深入了解C语言——函数的使用(实例),第1张

C语言生成的代码在执行效率上比其它高级语言都高。现在让我们来看看C语言生成的代码具体是什么样子的。当你看完本文对于C语言的了解一定会更深一步了。

本文通过一个个实际案例程序来讲解C语言。

研究案例一

工具: Turboc C v2.0,Debug,MASM v5.0,NASM

实例C程序:

/* example1.c */

char ch

int e_main()

{

e_putchar(ch)

}

目标内容:C语言调用函数的方法与细节

我们使用的C编译器是16位的Turboc C v2.0,它生成的是16位的代码,比较简单,方便我们来研究。同时我们也需要用到DOS下的DEBUG来进行反汇编。由于我们很多案例中的程序并不是完整的C程序,所以Turboc下的Tlink并不能为我们生成目标程序,所以我将使用MASM中的link.exe,同时里面的exe2bin.com也可以为我们把exe文件转换成bin文件。

这个程序没有main函数,我们用e_main来代替main函数.这样我们能避开C语言对main函数进行一系列处理的代码.同样,我们也用e_putchar()来代替我们平常使用的putchar().这里"e"的意思就是"example"。

没有了main函数,我们的C程序就没有了入口,所以在开始编译这段C代码之前,我还得写几行简单的汇编代码,通过它来作为我们程序的入口。

C程序的入口 start.asm

[BITS 16]

[global start]

[extern _e_main]

start:

call _e_main

这个程序应该是把

十进制数

转换成

二进制数

输出

#include

//

头文件

void

main()

{

int

a,b[10],c,i=0

//

a存储待转换的十进制数,b[10]存储转换后的二进制位,

//

c

是存储

余数

printf("输入一个整数\n")

scanf("%d",&a)

//

输入需转换的十进制数

while(a!=0)

//

只要a不为零,就继续转换

{

c=a%2

//

把a除以2

余数赋值给c

a=a/2

//

把商存入a进行下一次循环

b[i]=c

//

把余数存到数组中作为二进制中的一位

i++

}

for(i>0i--)

printf("%d",

b[i-1])

//反向输出余数,即得到二进制

例如输入4

因为4

!=

0

4

/

2

=

2((商=a)...........0(余数=c=b[0])

因为2

!=

0

2

/

2

=

1((商=a)...........0(余数=c=b[1])

因为1

!=

0

1

/

2

=

0((商=a)...........1(余数=c=b[2])

因为

0

=

0

结束循环输出

b[2]

b[1]

b[0]

100,也就是二进制的

4

题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。

直接编译,程序执行结果如下图所示:

题目02:编写一个int string_len(char *s),返回字符串s的字符长度(不包括\0)。

直接编译,程序执行结果如下图所示:

扩展资料:

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8145245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存