
C/C++
vinep
我思念的城市 已是黄昏 为何我总对你 一往情深 曾经给我快乐 也给我创伤 曾经给我希望 也给我绝望 我在遥远的城市 陌生的人群 感觉着你遥远的忧伤
展开
-
复杂指针判别
右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的。 右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。 笔者要对这个原创 2006-11-05 12:58:00 · 802 阅读 · 1 评论 -
c++数据类型--指针、字符串、const、引用
指针要注意类型的对应,不要出现类似 int * 转向 int 的操作。int **p = 0; //指向指针的指针,不让它指向任何地方int *p1 = *p;int array[10];int *p1 = array; //数组名指定数组首地址int *p1 = &array[0]; //指向第一个元素对应的地址字符串的常见操作:遍历串int string_len原创 2009-02-17 12:33:00 · 2479 阅读 · 0 评论 -
c++数据类型--枚举、数组
枚举 enum open_modes{read=1, write, append}; void open(const char* FileName, open_modes modes) { } int main(int argc, char* argv[]) { open("", write); return 0; } 另外如果想显示open_modes的具体意思,可以新建一个数组,按open_m原创 2009-02-17 12:34:00 · 2764 阅读 · 0 评论 -
c++数据类型--string
string是C++标准类中的字符串类,可以用它代替C风格的字符串操作,来减少指针等底层因素引起的错误。使用string类,头文件引用#i nclude #i nclude #if _MSC_VER > 1020using namespace std;#endif 其中,主要是要引用std名字空间。定义string str;string str = "abcd";string str("原创 2009-02-17 12:34:00 · 2564 阅读 · 0 评论 -
c++数据类型--string
string是C++标准类中的字符串类,可以用它代替C风格的字符串操作,来减少指针等底层因素引起的错误。使用string类,头文件引用#i nclude #i nclude #if _MSC_VER > 1020using namespace std;#endif 其中,主要是要引用std名字空间。定义string str;string str = "abcd";string str("原创 2009-02-17 12:38:00 · 2177 阅读 · 0 评论 -
c++数据类型--vector
vector为内置数组提供了一种替代方案,称为向量,是STL容器的一种。*引用头文件#i nclude #i nclude #if _MSC_VER > 1020using namespace std;#endif *定义vector ivec(10); //初始化大小为 10 个元素。vector ivec(10, 8);原创 2009-02-17 12:43:00 · 2073 阅读 · 0 评论 -
c++表达式
* sizeof三种形式sizeof(type name); //注:没有sizeof typename 所以sizeof int 错误, 只能sizeof(int);sizeof(object); //sizeof(i_rec);sizeof object; //sizeof i_rec;当object为数组时,返回整个数组的长度,并不是元素的原创 2009-02-17 12:45:00 · 2192 阅读 · 0 评论 -
c++数据类型--bitset
*头文件#i nclude #if _MSC_VER > 1020using namespace std;#endif *声明1. bitset bitrec; //简单指明向量长度2. bitset bitrec(0xffff) //被设为:000000000000000011111111111111113. bitset bitrec("110010"原创 2009-02-17 12:47:00 · 2533 阅读 · 0 评论 -
c++表达式--类型转换
隐式类型转换1. 混合算术运算中,最宽的类型为目标转换类型 int x = 2.32+2; //2被提升为double型2. 赋值运算中,被赋值对象为目标转换类型 int x = 2.32+2 //2被提升为double型后,相加为4.32 double再转换为int, 赋值给x, 注意小数位直接舍去。3. 函数调用参数中 double sqrt(double); sqr原创 2009-02-17 12:48:00 · 2409 阅读 · 0 评论 -
c++数据类型--文字常量、变量
文字常量整型类型:char, short, int, longint i = 100; //缺省为intint i = 100u; //无符号整型int i = 100L; //long型int i = 100UL; //无符号long型表示方式:10进制, 八进制, 16进制int i = 20; //10int i = 020; //8int i = 0x20;原创 2009-02-17 12:32:00 · 2874 阅读 · 0 评论 -
指针类型
int *i; 普通指针,它指向int类型数据int **i; 指向指针的指针,它指向一个int *指针int *p[5]; 指针数组,p是一个且有5个元素的数组,p的元素是一个int *型指针int (*p)[5]; 数组指针,p是一个指针,它指向一个且有5个元素的数组。int (*p)(void) 函数指针,p 是一个函数指针,这类函数具有int型原创 2006-11-05 12:59:00 · 758 阅读 · 0 评论 -
内存区域说明
摘要:内存管理向来是C/C++程序设计的一块雷区,大家都不怎么愿意去碰她,但是有时不得不碰它。虽然利用C++中的smart pointer已经可以完全避免使用指针,但是对于对于指针的进一步了解,有助于我们编写出更有效率的代码,也有助于我们读懂以前编写的程序。 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由转载 2006-11-05 12:56:00 · 620 阅读 · 0 评论 -
指针的一些概念
概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 下面看一些概念 *指针的类型 *指针所指向的类型 *指针的值或者叫指针所指向的内存区 *指针所指向内存区域的值 *指针本身所占据的内存区 指针的类型:指针本身的类型,比如 int *i 则指针类型为 int * ,即去掉变量剩下的部分为指针的类型。 指针所指向的类型:指针所指向变量的类型,比如 int *i 指针向i原创 2006-11-05 13:00:00 · 645 阅读 · 0 评论 -
linux-c: ipc_共享内存
简介共享内存是进程间通讯的一种机制,在数据量较大时,比较合适。每个共享内存对象都有一个shmid_ds结构体与之对应,代表共享内存的一些信息。因为shm是SYSV子系统的一种机制,所以有SYSV的一些特性,1、引用标识符:用来访问对象2、键:定位引用标识符3、ipc_perm结构:记录一些状态信息要引入的文件 #i nclude #i nclude #i nclude 创建共享内存与打原创 2006-11-05 12:45:00 · 3003 阅读 · 0 评论 -
C中几种相对不常用类型 - 联合体
vinep 发表于 2005-11-22 13:47:10 union a_bc{ int i; char mm; }; 与结构体用法相似,下面是几点不同:1. 结构和联合都是由多个不原创 2006-11-05 12:52:00 · 687 阅读 · 0 评论 -
C中几种相对不常用类型 - 结构体
结构体定义方法struct person { char name[10]; int age; char sex;};变量定义方法方法1:struct person { char name[10]; int age; char sex;};struct person jim; //定义时,前面要加struct方法2:struct person { char name[10]; in原创 2006-11-05 12:55:00 · 940 阅读 · 0 评论 -
使用指针注意问题
...原创 2006-11-05 12:57:00 · 621 阅读 · 0 评论 -
断言
#i nclude void fun(int p) { assert(0 != p);}当fun传递参数为0时,即不满足assert的判断时,程序会异常退出。assert只在debug模式下才起作用,Resele模式下就不起作用了。vc中,有debug, resele两种模式,(可以在编译->放置可远行配置中设置),resele模式(发布版本)对代码进行了优化,并且assert不起作用。原创 2006-11-05 12:48:00 · 736 阅读 · 0 评论 -
预处理
由ANSI的标准规定, 预处理指令主要包括: #define #error #if #else #elif #endif #ifdef #ifndef #undef #line #pragma #define 指令宏定义指令#define BUFSIZE 20#define MAX(x原创 2006-11-05 12:49:00 · 704 阅读 · 0 评论 -
C中几种相对不常用类型 - 枚举
enum 枚举名{ 标识符[=整型常数], 标识符[=整型常数], ... 标识符[=整型常数], } 枚举变量;如果后面整形常数没有初始化的话,枚举元素的值从0开始向后排enum chars {a, b, c};chars mychar = a;原创 2006-11-05 12:50:00 · 689 阅读 · 0 评论 -
c++知识点--extern "C"的作用
因为C、C++的编译器对函数名的修饰不同,为了保证在C、C++中编写的函数能够被互相调用,所以采用这个链接指示符以int func(int, int)为例,C的编译器会将名字改编为_func, 而C++的编译器会改编为_func_int_int 或_funcii(各编译器不同)。如果这个函数在C中编译成库,目标文件中函数名为_func,当这个函数中C++中被调用时,C++的编译器就会到目标文件中寻原创 2009-02-17 12:49:00 · 6771 阅读 · 3 评论