摘要: 函数指针的应用首先实现一个基本的计算器,暂时可以支持加减乘除功能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 石莹 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 目录:一、术语session二、HTTP协议与状态保持三、理解cookie机制四、理解session机制五、理解javax.servlet.http.HttpSession六、HttpSession常见问题七、跨应用程序的session共享八、总结 一、术语session在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个 session。有时 阅读全文
posted @ 2010-05-14 06:29 石莹 阅读(1297) 评论(0) 推荐(0) 编辑
摘要: 1、将一个数(0x11FF)打印,再将它作为指针打印指向的内存单元中的值,再将所指向的内存单元的值再作为地址打印指向的内存单元的值,重复这个过程。main() { int p = 0x11ff; char ch = 0; while (ch != 'q') { printf("p = %4x \t*p = %4x\n",p,(int)(*(int*)p)); p = (int *)(*(int*)p); ch = getch(); }}2、编写一个结构体,打印结构体的首地址,再打印结构体中每个数的首地址,然后将结构体按照一个字节一个字节打印出来main(){ 阅读全文
posted @ 2010-05-13 14:08 石莹 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 函数指针下面是关于函数指针的一些资料函数指针是指向函数的指针变量。因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参数。函数指针的声明方法为:数据类型标志符 (指针变量名) (形参列表);我们通过(*(int far *)+地址)这样的代码实现了访问任意一段内存的数据,那么可以通过 阅读全文
posted @ 2010-05-13 10:54 石莹 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 不使用变量的编程 变量的本质是内存空间的别名,通过对汇编的学习和王爽汇编语言第二版的综合研究,我们可以在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 石莹 阅读(464) 评论(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 石莹 阅读(1548) 评论(0) 推荐(1) 编辑
摘要: 这一部分继续深入研究用汇编解释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 石莹 阅读(3186) 评论(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 石莹 阅读(1628) 评论(1) 推荐(2) 编辑
摘要: 王爽汇编语言综合研究 使用寄存器 1、使用寄存器编程 main函数是c语言编写程序的入口函数,但是main中的第一条语句并不是程序中被执行的第一条指令,还有很多其它语句。为了研究我们的程序编译后的语句,首先要找main函数的位置,可以通过下边的程序获得main函数的偏移地址 Main() { Printf(“%x\n”,main); } 函数中printf语句表示以16进制打印main... 阅读全文
posted @ 2010-04-13 16:56 石莹 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 王爽汇编语言 第二版 课程设计2编写一个可以自行启动的计算机,不需要在现有操作系统环境中运行的程序一、相关资料 系统启动初始化完成后最终调用19h,该中断读取软盘的第一扇区或硬盘的第一扇区到0:7c00开始的512个字节的内存空间中,并将cs:ip指向0:7c00执行。更详细参考王爽汇编语言第二版,课程设计2,p.312二、设计思路 将安装程序分为三个段,1、第一个段为安装程序,负责将第二个段写入第一扇区,第三个段写入2-17扇区;2、第二个段是主引导程序,存在于软盘第一扇区,由BIOS的19h中断读取到0:7c00开始的内存单元中,并执行0:7c00的第一行代码。这一段的任务是将软盘2-17 阅读全文
posted @ 2010-04-06 18:42 石莹 阅读(5660) 评论(0) 推荐(0) 编辑