摘要:看下面的一段代码。复制字符串#include<stdio.h>void str_cpy( char *s,char *t){ while((*s=*t)!='\0') { s++; t++; } *s='\0';}void main(){ char *a="I am a teachar."; char *b="you are a student."; str_cpy(a,b); printf("%s\n",a);}但是一运行就会报错,访问内存错误。为什么?因为:char *a="I 阅读全文
图的邻接矩阵表示及DFS
2012-05-27 23:22 by youxin, 811 阅读, 0 推荐, 收藏,
摘要:首先,图(下面指的是有向网)的表示如下:#ifndef GUARD_c7_1_h#define GUARD_c7_1_h #include<limits>#define INFINITY INT_MAX#define MAX_NAME 5 //顶点字符串的最大长度#define MAX_VERTEX_NUM 20 //最大顶点数//enum GraphKind{ DG,DN,AG,AN }; //有向图,有向网 无向图typedef char VertexType[MAX_NAME]; //不能写成typedef char* vertexType,会出现访问内存错误typedef 阅读全文
指向结构体的指针
2012-05-27 21:49 by youxin, 409 阅读, 0 推荐, 收藏,
摘要:在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。创建结构体指针是极常见的。下面是一个例子:typedef struct{ char name[21]; char city[21]; char state[3];} Rec;typedef Rec *RecPointer;RecPointer r;r=(RecPointer)malloc(sizeof(Rec));r是一个指向结构体的指针。请注意,因为r是一个指针,所以像其他指针一样占用4个字节的内存。而malloc语句会从堆上分配45字节的内存。*r是一个结构体,像任何其他Rec类型的结构体一样。下面的代码显示了这个指针变量的典 阅读全文
int main() 和int main(void)的区别
2012-05-22 20:01 by youxin, 9191 阅读, 0 推荐, 收藏,
摘要:C89标准的main()函数是可接受的,尽管现在建议是使用C99的标准。C99标准只定义了如下两种可接受的函数原型:int main ( void )int main ( int argc, char *argv[] ) 以上函数原型微小的变形也是可以被接受的,比如int可以被typedef定义为int的名字所代替,argv的类型也可以写成char **argv,等等。第一种函数原型选择适用你不许要访问命令行参数的时候。对于第二种函数原型选择,如果你喜欢的话,标识符argc和argv的名字可以改变,但是坚持使用argc/argv是一个惯例。main()函数的返回值必须是一个int型,返回值给m 阅读全文
c++ new关键字 详解
2012-05-22 19:57 by youxin, 1731 阅读, 1 推荐, 收藏,
摘要:首先必须知道,new是operator,而不是函数。 但是有返回值,返回a pointer to the first element in the newly allocated storage space.我们都知道,使用 malloc/calloc 等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的。但是,如果你简单地把这一招应用到 new 上,那可就不一定正确了。我经常看到类似这样的代码:int* p = new int[SIZE]; if ( p == 0 ) // 检查 p 是否空指针... 阅读全文
汇编操作显存
2012-05-21 22:50 by youxin, 3134 阅读, 1 推荐, 收藏,
摘要:80*25彩色字符模式显示缓冲区(以下简称显示缓冲区)的结构: 内存地址中,b8000h-bffffh共32kb空间,为80*25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容会立即出现在显示器上。 在80*25模式下,显示器可以显示25行,每行显示80个字符,每个字符有256中属性(背景色,前景色等)。这样,一个字符在显示缓冲区就要占2个字节,分别存字符的ascii码和属性。在80*25下,一屏的内容在显示缓冲区中共占4000个字节。显示缓冲区分为8页,每页4kb(约等于4000b),显示器可以显示任意一页的内容。一般情况下,显示第0页的内容,也就是说通常情况下,b8000.. 阅读全文
汇编 .COM 文件
2012-05-21 20:58 by youxin, 1647 阅读, 1 推荐, 收藏,
摘要:COM 文件与一般的 EXE 文件在结构上有所不同,COM 文件是在早期没有分段的情况下设计的,具有结构简单,占用内存小,数据及代码都在同一段内等即以 64K 为单位的特点,较实用的汇编程序,如对驻留程序,中断服务程序等的设计,在可能的情况下,一般都采用这样的程序结构。 COM 文件在加载时将 CS, DS, ES, SS段都定义在 PSP 段基址上,IP 定义在 PSP+100H 处,SP 堆栈指针被定位在程序的末端,并在栈顶存放两个字节的00H。编制COM 文件应遵循下列规则:1. 只能建立一个代码段,内含代码和数据段,同时不能单独设置堆栈段。2. 代码和数据只能在 100H 以后设置.. 阅读全文
EMU8086 编译器使用简介
2012-05-21 20:42 by youxin, 1835 阅读, 0 推荐, 收藏,
摘要:EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。如何运行1.在开始菜单选在它的图标,或者直接运行Emu8086.EXE2.在"FILE"菜单中选择"SAMPLE"3.点击"Compile and Emulate"按纽(或者按快捷键F5)4.点击"Single Step"按纽(或者按快捷键F8),可以查看代码如何运行. 阅读全文
dos窗口下debug设置屏幕大小
2012-05-21 13:13 by youxin, 934 阅读, 0 推荐, 收藏,
摘要:debug 没有窗口滚动功能的. 可以适当地将其所在的 dos 窗口增加行数, 比如 50. 这个即可以修改相应 cmd 的快捷方式属性, 也可以在 debug 前 mode con lines=50windows 7 dos不支持全屏,windows xp支持。 阅读全文
回溯法解八后问题
2012-05-20 22:58 by youxin, 656 阅读, 0 推荐, 收藏,
摘要:在一个8×8国际象棋盘上,有8个皇后,每个皇后占一格;要求皇后间不会出现相互“攻击”的现象,即不能有两个皇后处在同一行、同一列或同一对角线上。问共有多少种不同的方法。 我们用回溯法,现在的目的不是找有多少种解法,而是只要找出一种合适的解法输出即可。先写一个place函数,判断当前位置是否合法:bool place(int x[],int k){ int i; for(i=1;i0) { x[k]=x[k]+1; //在当前列加1的位置开始搜索,这句很重要 while(x[k]0)假设有4个皇后。仔细想想,假设当k=1此时a[k]=4; a[k]还... 阅读全文
浙公网安备 33010602011771号