摘要:
一、基础研究我们之前研究过变量、数组、函数和指针,他们都可以看作是内存中存储的一段数据,当程序需要用到它们时,会通过它们的地址找到它们并进行调用,只是调用的用途不同而已:变量和数组元素是作为常量来处理,对它们进行赋值、运算、取址等操作,而程序是从首地址开始执行直到返回,指针是用来对地址进行操作,或者... 阅读全文
摘要:
一、基础研究这里研究的内容是函数指针,需要我们在研究后构造程序来描述函数指针数组的用法和向函数传函数指针的方法。指针有很多种:整型指针、结构体指针、数组指针等等,它们的本质是它们的值都是一个地址,只不过整形指针的值是一个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文件,只是... 阅读全文