摘要:
一、基础研究在这里我们需要提供一套新的c语言开发工具cc,它支持的c程序不是从main开始运行而是从CMain开始运行。书上已经对该工具程序进行了需求分析:(1)要在屏幕中间显示彩色的字符串;(2)等待用户输入,按下任意键后开始运行程序员写的程序。也给出了由需求分析进行的功能分析:代码文件main.... 阅读全文
摘要:
一、基础研究观察这两个程序:Menu.h:Ues.c:程序执行的结果是在屏幕上显示一个三行的菜单:用户按键选择菜单的某一项可以在屏幕上显示该项所表示的彩色字符串:它是如何实现的呢?我们先来看看menu.h。程序构造了一个结构体,并将菜单的相关信息都放在结构体里。这里有个问题:我们之前定义结构体都是用... 阅读全文
摘要:
一、基础研究我们之前从底层研究了c语言,也学习了c语言的组成部分和使用方法,但是c语言是一门编程语言,它是要用来编写程序的。要编写一个好的程序,首先要弄清这个程序要干什么,也就是需求分析,之后要思考及确定实现这个目标的方法,怎么样让程序简短、高效、易懂、可移植、方便维护和修改,这涉及到要怎么实现算法... 阅读全文
摘要:
一、基础研究我们之前研究过变量、数组、函数和指针,他们都可以看作是内存中存储的一段数据,当程序需要用到它们时,会通过它们的地址找到它们并进行调用,只是调用的用途不同而已:变量和数组元素是作为常量来处理,对它们进行赋值、运算、取址等操作,而程序是从首地址开始执行直到返回,指针是用来对地址进行操作,或者... 阅读全文
摘要:
一、基础研究这里研究的内容是函数指针,需要我们在研究后构造程序来描述函数指针数组的用法和向函数传函数指针的方法。指针有很多种:整型指针、结构体指针、数组指针等等,它们的本质是它们的值都是一个地址,只不过整形指针的值是一个int型数据的地址,结构体指针的值是一个结构体变量的地址,而这里的函数指针指向的... 阅读全文
摘要:
一、基础研究写一个函数showshr(char*,...)它可以接收不定数量的char*型参数,并打印这些指针所指向的字符串。这个题目也是要实现不定长参数的函数,而我们之前研究过printf()函数的打印机制,可以发现他们的原理是一样的,只不过printf()函数是点对点打印,即通过说明符识别要打印... 阅读全文
摘要:
一、基础研究要从地址读取数据,肯定是要定义一个指针变量p,用它来实现变换地址和取值的功能。另外程序是当两个条件中的某一个出现时才停止,所以应该用while~do循环语句循环输出n和d,并用while进行判断。这里实现三个问题:(1)循环地把值转换成地址。(2)判断偏移地址是否为0xffff。(3)判... 阅读全文
摘要:
一、基础研究写一个c程序,打印int、long、double型变量所占的字节数、地址、各个字节的地址和内容。打印地址和内容比较好办,打印地址可以用取址符&,打印内容直接输出就行了,那么怎么打印所占的字节数呢?我们打印一个东西是输出它的值,而变量所占的字节数没有变量或指针来存储,我们可以得到变量所占字... 阅读全文
摘要:
一、基础研究将下面的程序编译连接,用debug加载:首先执行第一条语句:发现p=(unsignedchar*)0x1000;在这里是把1000赋给一个偏移地址为01af、大小为两字节的内存空间。1000是一个值,这里将它强制转换成unsignedchar*型的数据,否则赋给p会因为类型不同而出错。我... 阅读全文
摘要:
1、基础研究用tcc将程序编译为.obj文件。这里也可以使用tcc-lincluderun.c来将run.c文件编译成run.obj文件。再用tcc对下面的程序进行编译链接,发现提示错误:提示标志f在程序中未定义。这说明如果程序里出现未定义的变量或函数,编译器能够正常将原文件编译成.obj文件,只是... 阅读全文