随笔分类 -  c语言

c语言强化训练——简易计算器
摘要:一、设计要求实现一个简单的计算器,要求可以求解表达式,支持基本的运算并有扩展能力和基本的容错能力二、设计思路程序需要定义两个工作栈,分别保存表达式计算过程中的运算符与运算数,通过一个优先级表来判定运算顺序。通过判定输入的运算符来调用不同的函数,实现支持基本的运算符号。可以通过定义一个运算符表和一个函数指针表,通过查找方式调用函数,实现运算符的可扩展性。三、详细设计1、首先需要编写一个栈,这个栈需要支持浮点数和字符,编写这个栈stack.h文件typedef struct { char * buffer; int typesize; int top; int max;} Stack;Stack 阅读全文

posted @ 2010-06-12 16:32 石莹 阅读(2188) 评论(1) 推荐(1) 编辑

c语言强化训练笔记2010/5/16
摘要:函数指针的应用首先实现一个基本的计算器,暂时可以支持加减乘除功能int add(int,int);int sub(int,int);int mul(int,int);int div(int,int);main(){ char a[30]; char b[30]; char c; gets(a); printf("%c\n",c=getch()); gets(b); printf("---------\n"); if(c=='+') { printf("%d\n\n",add(atoi(a),atoi(b))); } i 阅读全文

posted @ 2010-05-17 15:49 石莹 阅读(218) 评论(0) 推荐(0) 编辑

c语言强化训练笔记2010/5/9
摘要:函数指针下面是关于函数指针的一些资料函数指针是指向函数的指针变量。因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参数。函数指针的声明方法为:数据类型标志符 (指针变量名) (形参列表);我们通过(*(int far *)+地址)这样的代码实现了访问任意一段内存的数据,那么可以通过 阅读全文

posted @ 2010-05-13 10:54 石莹 阅读(538) 评论(0) 推荐(0) 编辑

c语言强化训练笔记2010/5/8
摘要:不使用变量的编程 变量的本质是内存空间的别名,通过对汇编的学习和王爽汇编语言第二版的综合研究,我们可以在c程序中直接使用内存空间来编程 例如,我们想通过编程在屏幕中央显示8个绿色的a,可以通过写显存的方式在b800段内存写入显示的数据,同时,我们还需要有一个计数器来控制循环了多少次,可以把一段安全的空间来当计数器使用,程序可以这样编写main(){ for ((*((int far *)0x00000200))=0; (*((int far *)0x00000200))<8; (*((int far *)0x00000200))++) { (*(int far *)(0xb8000000 阅读全文

posted @ 2010-05-12 18:36 石莹 阅读(469) 评论(0) 推荐(0) 编辑

王爽汇编语言综合研究-函数如何接收不定数量的参数
摘要:1、c语言如何传递参数 编写这样一个程序试验 void showchar(char a,int b);main(){ showchar('a',2);}void showchar(char a,int b){ *(char far *)(0xb8000000 + 160*10 + 80) = a; *(char far *)(0xb8000000 + 160*10 + 81) = b;} 调试这个... 阅读全文

posted @ 2010-04-18 08:59 石莹 阅读(1555) 评论(0) 推荐(1) 编辑

王爽汇编语言综合研究-不用main函数编程
摘要:这一部分继续深入研究用汇编解释c的原理,尝试不用main()函数编写可以正确运行的程序 1、首先编写一个简单的程序 f(){ *(char far *)(0xb8000000+160*10+80) = 'a'; *(char far *)(0xb8000000+160*10+81) = 2;} 在TC中编译,连接这个程序。出现了一个连接错误 Linker Error:Undefined symbo... 阅读全文

posted @ 2010-04-17 16:25 石莹 阅读(3197) 评论(0) 推荐(0) 编辑

王爽汇编语言综合研究-使用内存空间
摘要:1、在c程序中直接访问内存空间 写入以下程序并调试 main() { *(char *)0x2000 = 'a'; *(int *)0x2000 = 0xf; *(char far *)0x20001000 = 'a'; _AX = 0x2000; *(char *)_AX = 'b'; _BX = 0x1000; *(char *)(_BX + _BX) = 'a'; *(char far *)... 阅读全文

posted @ 2010-04-14 01:27 石莹 阅读(1642) 评论(1) 推荐(2) 编辑

函数调用约定解析
摘要:本文原地址:http://liue.spaces.live.com/blog/cns!D126FF4C28B17AD1!237.entry前言: 文章讲述了几种主要程序语言中的函数调用约定;详细说明时主要以VC6中的函数调用约定为主,阐释方式主要是以C++程序编译后得到的汇编代码来进行说明;我所使用的编译器和平台:WindowsXP + 赛扬1G + VC6(主要工具)\Delphi6\C++Builder6; 一:函数调用约定; 函数调用约定是函数调用者和被调用的函数体之间关于参数传递、返回值传递、堆栈清除、寄存器使用的一种约定; 它是需要二进制级别兼容的强约定,函数调用者和函数体如果使用不 阅读全文

posted @ 2009-12-27 21:43 石莹 阅读(1195) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示