C语言、C++编程技术馆

C语言,C++编程,C语言开发应用,C++开发应用,VC++编程, C++Builder编程,C语言教程,C++教程,C语言开发教程,C++开发教程,VC++教程, C++Builder教程,C++培训,C语言培训,编程培训
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年3月25日

摘要: #include "iostream.h"#include "fstream.h"#include "SqStack.h"#include "stdlib.h"#define MAX 100000#define MAX_VERTEX_NUM 20 typedef enum {DG,DN,UDG,UDN} GraphKind;typedef char VertexType; typedef struct { VertexType vexs[MAX_VERTEX_NUM]; int arcs[MAX_VERTEX_NU 阅读全文

posted @ 2011-03-25 10:56 teiller2008 阅读(271) 评论(0) 推荐(1) 编辑

2011年3月18日

摘要: 可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。那么怎么实现C语言中的随机函数呢? 除了random函数,还有一个rand函数,也是一个随机函数,可以产生从0到rand_max的随机数。 #include <stdio.h> #include <stdlib.h> int main() { int k; k=rand(); printf("%d\n", k); return 0; } 大家可以把以上的代码编译运行一下,发现他的确产生随机数了,但是你 阅读全文

posted @ 2011-03-18 11:16 teiller2008 阅读(311) 评论(0) 推荐(1) 编辑

2011年3月14日

摘要: clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf 表头文件 #include<stdio.h> 定义函数 int fclose(FILE * stream); 函数说明 fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统 阅读全文

posted @ 2011-03-14 19:09 teiller2008 阅读(269) 评论(0) 推荐(1) 编辑

2011年3月11日

摘要: 一、sizeof() 1.sizeof的使用:sizeof操作符以字节形式给出了其操作数的存储大小。 sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。 2.sizeof的结果:sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、do. 阅读全文

posted @ 2011-03-11 16:28 teiller2008 阅读(247) 评论(0) 推荐(1) 编辑

2011年3月10日

摘要: C语言程序调用C++库函数方法,关键是函数名字解析问题。 其实实现起来不是很难。 使用关键字 extern \"C\" 可以使得C++编译器生成的函数名满足C语言的要求 例子如下: 链接库头文件: //head.h class A { public: A(); virtual ~A(); int gt(); int pt(); private: int s; }; .cpp //firstso.cpp #include <iostream> #include \"head.h\" A::A(){} A::~A(){} int A::gt() 阅读全文

posted @ 2011-03-10 20:09 teiller2008 阅读(667) 评论(0) 推荐(1) 编辑

2011年3月9日

摘要: domain: namespace A or class A action: function parameter: ParaA, ParaA declare: void function(ParaA, ParaA) definition example: 1 + 2 = 3 class A { void function(ParaA p1, ParaA p2) { .......; } } domain: namespace A or class A action: function parameter: ParaA, ParaB declare: void function(ParaA,. 阅读全文

posted @ 2011-03-09 16:56 teiller2008 阅读(250) 评论(0) 推荐(1) 编辑

2011年3月8日

摘要: 一般认为在c中分为这几个存储区 1栈 - 有编译器自动分配释放 2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静 态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束释放 4另外还有一个专门放常量的地方。 - 程序结束释放 在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分 配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪 里都存放在全局区(静态区),在所有函数体外定义. 阅读全文

posted @ 2011-03-08 15:01 teiller2008 阅读(355) 评论(0) 推荐(1) 编辑

2011年3月7日

摘要: 一般我们在C语言中使用函数的时候都没有注意到这样一个问题,假设我们有这样的一个函数: int function(int a,int b) 调 用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算 机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须 由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。 栈是一种先进后出的数据结构,栈有一个存储区、 一. 阅读全文

posted @ 2011-03-07 19:47 teiller2008 阅读(1039) 评论(1) 推荐(2) 编辑

2011年3月5日

摘要: 对于这个古老的问题,VC知识库的精华区以及以往的在线杂志中都有详尽不一的描述。本文提供的方法是一个比较完整的解决方案,并附有详细的实现细节。希望大家对这个问题有彻底的认识。其实,如果你熟悉 Windows 的Sockets API,并了解一些底层的Winsock知识。那么要获得某台机器的IP地址并不是什么难事。一台机器可以装多块网卡,因此它就可能有多个IP地址。目前很多发烧友的PC机都装有多块网卡。其中一块网卡与调制解调器(MODEM)或者ADSL适配器相连,另一块与家里的局域网(LAN)相连。对于有宽带连接条件的家庭,这更是一种典型的配置。任何事情,一旦你知道了解决的方法,一切都会变得如此. 阅读全文

posted @ 2011-03-05 17:32 teiller2008 阅读(708) 评论(0) 推荐(1) 编辑

2011年3月4日

摘要: 函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢? 如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针用如下的形式,以上面的test()为例: int (*fp)(int a);//这里就定义了一个指向函数的指针 函数指针不能绝对不能指向不同类型,或者是带不同形参的函数,在定义函数指针的时候我们很容易犯如下的错误。 int *fp(int a);//这里是错误的,因为按照结合性和优先级来看就是先和()结合,然后变成了一个返回整形指针的函数了,而不是函数指针,这一点尤. 阅读全文

posted @ 2011-03-04 18:42 teiller2008 阅读(254) 评论(0) 推荐(1) 编辑

2011年3月3日

摘要: 在C++中,为了解决一些频繁调用的小涵数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联涵数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,涵数的死循环递归调用的最终结果就是导致栈内存空间枯竭。 下面我们来看一个例子 C++ 代码 //程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必著名出处和作者 #include <iostream> #include <stri. 阅读全文

posted @ 2011-03-03 16:44 teiller2008 阅读(307) 评论(0) 推荐(1) 编辑

2011年3月2日

摘要: web服务的确是.net中让人激动的部分——但它们本身比.net要大。其中的道理很简单。几乎所有你能叫出名字的服务都有一些执行服务器端代码的机制:你在浏览器的地址栏中输入一个URL;接收到你的请求,服务器上就开始运行什么东西,然后以html页面返回你要的结果。它可能是ASP,ASP.net,servlets,甚至是五年前通过CGI触发的perl本。因此想象一下,如果运行代码返回的是XML格式而非HTML格式的结果,并且服务请求并非是在浏览器地址栏中输入的url,而是某些代码中以HTTP中的GET方法向服务器请求获知URL地址。那么你现在得到的是一个程序和程序间的连接。正巧每种语言都一个类库,. 阅读全文

posted @ 2011-03-02 17:35 teiller2008 阅读(583) 评论(0) 推荐(0) 编辑

2011年3月1日

摘要: 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。 第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。 例如:字符串的赋值。 方法A:通常的办法: #define LEN 32 char string1 [LEN]; memset (string1,0,LEN); strcpy (string1,"This is a example!!"); 方法B: const char string2[LEN] 阅读全文

posted @ 2011-03-01 18:53 teiller2008 阅读(214) 评论(0) 推荐(1) 编辑

2011年2月28日

摘要: 用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制。但是要正确实现 + 操作符会给设计,实现和性能带来一定的挑战。本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个操作符。 考虑如下的表达式: int x=4+2; 内建的 + 操作符有两个类型相同的操作数,相加并返回右值 6,然后被赋值给 x。我们可以断定内建的 + 是一个二元的,对称的,可交换的操作符。它产生的结果的类型与其操作数类型相同。按照这个规测,当你为某个用户定义类型重载操作符时,也应该遵循相应内建操作符的特征。 为用户定义类型重载 + 操作符是很常见的编程任务. 阅读全文

posted @ 2011-02-28 16:25 teiller2008 阅读(183) 评论(0) 推荐(1) 编辑

2011年2月27日

摘要: 堆内存是什么呢? 我们知道在c/c++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作中,我们有时候却需要动态的为数组分配大小,在这里c库中的malloc.h头文件中的malloc()函数就为您解决了问题(bc或者是在老的标准中是alloc.h),它的函数原形是void* malloc(size_t size),在动态开辟的内存中,在使用完后我们要使用free()函数来释放动态开辟的内存空间。 下面我们来看一个完整的例子: #include <iostream> #include <malloc.h> using na 阅读全文

posted @ 2011-02-27 14:58 teiller2008 阅读(290) 评论(0) 推荐(1) 编辑

2011年2月26日

摘要: JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 Java和c++的相似之处多于不同之处,但两种语言问几处主要的不同使得Java更容易学习,并且编程环境更为简单。 我在这里不能完全列出不同之处,仅列出比较显著的区别: 1.指针 JAVA语言让编程者无法找到指针. 阅读全文

posted @ 2011-02-26 19:56 teiller2008 阅读(255) 评论(0) 推荐(0) 编辑

2011年2月25日

摘要: 封装、继承、多态是面向对象技术的三大机制,其中封装是基础,继承是关键,多态是延伸。 1.封装 封装的对象是数据和方法,支持数据封装就是支持数据抽象。在c++中,类是支持数据封装的工具,对象则是数据封装的实现。没有封装,就没有面向对象技术。 另外,封装还提供一种对数据访问严格控制的机制。因此,数据将被隐藏在封装体中,该封装体通过操作接口与外界交换信息。 对象被说明为给定类的量。每个给定类的对象包含有这个类所规定的若干个私有成员和公有成员以及保护成员。 在C语言中可以定义结构,但这种结构只包含数据,而不包含函数。C++中的类是数据和函数的封装体。在C++中,结构可作为一种特殊的类,它虽然可以包含. 阅读全文

posted @ 2011-02-25 17:00 teiller2008 阅读(415) 评论(0) 推荐(0) 编辑

2011年2月24日

摘要: 这里描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。传统的内存再分配技术非常繁琐,而且容易出错:在 C 语言中,一般都是每次在需要扩充缓存的时候调用 realloc()。在 C++ 中情况更糟,你甚至无法在函数中为 new 操作分配的数组重新申请内存。你不仅要自己做分配处理,而且还必须把原来缓存中的数据拷贝到新的目的缓存,然后释放先前数组的缓存。本文将针对这个问题提供一个安全、简易并且是自动化的 C++ 内存再分配技术——即使用 STL 的 vector。 用 STL vector 对象取代内建的数组来保存获取的数据,既安全又简单. 阅读全文

posted @ 2011-02-24 19:02 teiller2008 阅读(439) 评论(0) 推荐(2) 编辑

2010年10月19日

摘要: 我是在windows xp-sp2上使用SSHSecureShellClient-3[1].2.9.exe进行linuxC编程的,下面先讲一下怎么使用这个软件: 在本地安装SSHSecureShellClient-3[1].2.9.exe,在服务器上建立用户名和密码,然后打开SSH Secure Shell Client,enter键或者点击quick connect,输入目标机(我不懂,瞎叫)ip,输入用户名,enter键,输入密码。现在你应该已经进入linux了,在这里所有的linux命令都可以使用,新手不妨先敲几个常用的命令试一下! 下面从最简单的hello word讲到比较复杂的库引. 阅读全文

posted @ 2010-10-19 20:42 teiller2008 阅读(2213) 评论(0) 推荐(0) 编辑

摘要: 1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free. 3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete.注意new/delete不是库函数。 4,C++程. 阅读全文

posted @ 2010-10-19 20:29 teiller2008 阅读(1357) 评论(0) 推荐(0) 编辑