ANSI/ISO C/C++
文章平均质量分 56
jixingzhong
Impossible is nothing! 爱好:看书,编程,轮滑,旅游
展开
-
如何用c语言调用c++做成的动态链接库
如何用c语言调用c++做成的动态链接库:链接库头文件://head.hclass A{ public: A(); virtual ~A(); int gt(); int pt();private: int s;};.cpp//firstso.cpp#include #include "head.h"A转载 2006-11-14 10:34:00 · 2516 阅读 · 6 评论 -
C++中的类型强制转换
C++ 同时提供了四种新的强制转型形式(通常称为新风格的或 C++ 风格的强制转型): const_cast(expression) dynamic_cast(expression) reinterpret_cast(expression) static_cast(expression) 每一种适用于特定的目的: ·dynamic原创 2007-10-31 10:52:00 · 1574 阅读 · 0 评论 -
灵活/弹性数组成员--结构体中0个元素的数组
看这个结构体的定义:typedef struct st_type{ int nCnt; int item[0];}type_a;(有些编译器会报错无法编译可以改成:)typedef struct st_type{ int nCnt; int item[];}type_a; 这样我们就可以定义一个可变长的结构,用sizeof(type_a)得到的只有4,就是si原创 2007-11-05 09:01:00 · 4986 阅读 · 0 评论 -
宽字符处理函数与窄字符处理函数对应表
字符分类: 宽字符函数普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测试字符是否是字母 iswcntrl() iscntrl() 测试字符是否是控制符 iswdigit() isdigit() 测试字符是否为数字 iswgraph() isgraph() 测试字符是否是可见字符 iswlower() is原创 2007-11-05 08:52:00 · 4107 阅读 · 1 评论 -
指定元素初始化
在 C99 中另一个新的特性称之为指定性初始化. 指定性初始化使你能够初始化特定的数组元素而无需初始化整个数组. 假设你有一个具备5个元素地数组,而你需要仅仅初始化第2,4个元素, 并且将其他元素保持未初始化. 在 C++ 和 C89, 你不能这样做. 但是, C99 定义如下句法构造:int arr[5]={[1]=10,[3]=20}; /*designated initializers*原创 2007-11-05 09:11:00 · 1445 阅读 · 0 评论 -
正则表达式
正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 a 和 任意个 b ”,那么 ab, abb, abbbbbbbbbb 都符合这个特征。 正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。(原创 2007-11-08 15:02:00 · 1458 阅读 · 0 评论 -
成员函数指针和其他类型的强制转换,使用一般指针调用成员函数
成员函数指针和其他类型之间的转换,参见如下示例:class test...{public: void t()...{};};typedef void (test::*pMemFnction)(); int main()...{ pMemFnction method = &test::t; //成员函数指针定义并初始化 int method_ptr原创 2007-11-09 12:42:00 · 4974 阅读 · 1 评论 -
时间和日期操作
一. 几个基本概念介绍:Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点原创 2007-11-10 10:56:00 · 1546 阅读 · 0 评论 -
enum 的范围与size
一、enum的取值范围 C++标准规定超出枚举类型表示范围的赋值结果是undefined的。 enum的取值范围和 int 的范围并不是直接一致的。计算enum的取值范围,可以按如下方式操作: 1、不考虑负数:获取enum中的最大值,根据这个最大值所具有的位数,可以计算enum的表示范围。 举个例子:enum test{ a=2, b=4 };最大值为4,二进制表示为100,3bits,因为原创 2007-11-10 12:10:00 · 12616 阅读 · 1 评论 -
区分重载(overload),覆盖(Override)和隐藏(hide)
重载overload,这个概念是大家熟知的。在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制就是重载。重载不关心函数的返回值类型,即返回类型不同无法构成重载。此外,C++ 中的const成员函数也可以构成overload。 总结一下重载的特征: 1、处在相同的空间中,即相同的范围内; 2、函原创 2007-10-31 10:25:00 · 3287 阅读 · 2 评论 -
sscanf 函数简介
sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。 函数原型: int sscanf( const char *format [,argument]... ); 其中的format可以是一个或多个 {%[*] [width] [{h | l | I原创 2007-10-26 09:50:00 · 1333 阅读 · 0 评论 -
C99扩展特性
Some features that are in ISO C99 but not C89 or C++ are also, as extensions, accepted by GCC in C89 mode and in C++. 5.1 Statements and Declarations in Expressions Putting statements and declar原创 2006-11-14 10:40:00 · 2097 阅读 · 0 评论 -
区域表示--Locale 的概念
Locale 是软件在运行时的语言环境, 它包括语言(Language), 地域 (Territory)和字符集(Codeset). 其格式为: 语言[_地域[.字符集]]. 如对中文GBK字符集, locale的格式是:zh_CN.GBK. Locale 包含了以下分类: LC_COLLATE, 用于比较和排序. 排序对中文来说也比较重要, 但是现在的 glibc中的原创 2006-12-28 10:23:00 · 4315 阅读 · 1 评论 -
C语言实现集合的交,并,差
C语言实现集合的交,并,差作者:Raining_C 来源:http://blog.csdn.net/Raining_CN 【问题描述】 编制一个能演示执行集合的并、交和差运算的程序【基本要求】 (1)集合的元素限定为小写字母字符[ a......z ] (2 )演示程序以用户和计算机对话的方式执行【测试数据】【实现提示】转载 2006-12-28 10:07:00 · 20042 阅读 · 0 评论 -
scanf 妙招
scanf原型:参见《C语言大全》和K&C# include ;int scanf( const char *format, ... ); 函数 scanf() 是从标准输入流 stdin 中读内容的通用子程序,可以读入全部固有类型的数据并自动转换成机内形式。在 C99 中,format 用 restrict 修饰。format 指向的控制串由以下三类字符组成: ● 格式说明符原创 2007-01-07 09:42:00 · 4065 阅读 · 6 评论 -
C语言端序
C语言端序Endianism,端序,是指用来存储数据的方法,它定义了数据类型对字节进行寻址的方式。两种端序方式:1、Little-endian,小端序,是将低位字节存储在内存偏移地址较低的地址中,将高位字节存储在内存偏移地址较高的地址中;2、Big-endian,大端序,则是将低位字节存储在内存偏移地址较高的地址中,将高位字节存储在内存偏移地址较低的地址中。比如:0x12345678 在 bi原创 2007-01-17 21:44:00 · 2599 阅读 · 3 评论 -
关于动态内存分配
动态内存分配方式在很多场合下有着重要的意义。动态分配使得内存的利用效率大大提高,在一些内存受限的情况下显得极为重要。但是动态分配会带来一个问题,如何释放。这个问题的关键就是,在释放的时候,如何获知这块需要释放的内存空间是多少字节的。 在文中,笔者谈到new/malloc 等方式动态分配的内存,除了需要申请的这部分内存大小之外,还有一块cookie(小甜饼),其中保存的就是一些附加的信息。原创 2007-05-09 13:57:00 · 1864 阅读 · 2 评论 -
构造函数/析构函数中的异常处理
对于出错处理,在C语言时代,使用的方法就是返回一个错误代码。预定义一系列的代码标识,当发生指定的错误时候,调用过程返回对应该类型错误的代码。 这种方法简单,但是不适合复杂的应用。它会导致若干的问题,比如: 1.质量下降。使用错误代码,那么必然需要在处理中对不同的代码进行分支处理。而分支过程包含错误可能性是其他方式的10倍。消除分支,代码将更加健壮。 2.增加成本。一方面,原创 2007-10-26 10:50:00 · 5671 阅读 · 0 评论 -
临时对象被const reference, 生命期延长
按标准规定,临时对象可以被const reference,这里临时对象的生命期将延长。而延长对象生命期的方法没有作规定,由编译器决定。 TC++PL中的描述:A temporary created to hold a reference initializer persists until the end of its reference’s scope.注意到原创 2007-10-29 15:51:00 · 1474 阅读 · 1 评论 -
C99与C89比较,新增特性内容
1、增加restrict指针C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两原创 2007-11-10 11:55:00 · 6618 阅读 · 6 评论