C++/C
sssss年
这个作者很懒,什么都没留下…
展开
-
.h和.cpp
在ANSI C 的标准文献中,将你所指的“CPP 中的类代码”称为statement(声明 声明的意思是说明,解释);将你所指的“H 中的类代码”称为definition(定义),两者的定义是完全不同的主要指:statement将被C 编译器直接转换为二进制代码,而definition 只被C 编译器用于一些文本处理工作中(类似于宏) 把声明实现都写在头文件,如果不是写成内联函数原创 2013-10-28 17:13:23 · 603 阅读 · 0 评论 -
c++关键字
C/C++ Keywordsasm 插入一个汇编指令. auto 声明一个本地变量. catch 处理 thrown 产生的异常. const_cast 从一个const变量中抛出. default 是一个case语句中的缺省项. delete 释放内存. do 构造循环体. double 声明一个双精度浮点变量. dynamic_cast 动态投射. else 是一个if语原创 2014-05-22 18:09:36 · 557 阅读 · 0 评论 -
snprintf sscanf
头文件#include函数原型int snprintf(char *str, size_t size, const char *format, ...);功能将可变个参数(...)按照format格式化成字符串,然后将其复制到str中(1) 如果格式化后的字符串长度 (2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符转载 2014-07-16 11:44:33 · 820 阅读 · 0 评论 -
int ,long ,long long
1.几条规则(1)char类型一般是8bit,但ANSI C里没有硬性规定其长度,某些嵌入式编译器可能是16bit(2)short和long类型的长度不相同(3)int类型通常同具体机器的物理字长相同(4)short通常是16bits, int通常是16bits or 32bits每种编译器可以根据硬件的不同自由确定, 但是short和int必须最少是16bits, 而long类型原创 2013-11-29 11:17:07 · 958 阅读 · 0 评论 -
stdarg.h
stdarg.h是C语言中C标准函数库的头文件,stdarg是由standard(标准) arguments(参数)简化而来,主要目的为让函数能够接收可变参数。C++的cstdarg头文件中也提供这样的功能;虽然与C的头文件是兼容的,但是也有冲突存在。可变参数函数(Variadic functions)是stdarg.h内容典型的应用,虽然也可以使用在其他由可变参数函数调用的函数(例如,v转载 2014-07-18 10:47:57 · 714 阅读 · 0 评论 -
零碎
[30、41、61]—— 0 A a数据在内存中是一个字节一个字节存储的。 整型数据: 0x154a2541() 小端存储顺序 低位存在低地址 41254a15 大端反的0x25 0010 0101+ - * /重载后优先级不变化内聚:一个模块内各个元素彼此结合的紧密程度耦合:一个软件原创 2013-10-28 16:47:05 · 537 阅读 · 0 评论 -
宏定义
区别在于宏定义没有类型比如宏定义#define pi 3.1415926这里的pi并没有类型而全局变量放在主函数的前面 double pi=3.1415926;建议你少用宏定义,因为宏定义存在很强的安全隐患,没有类型的变量当然在很多时候会造成很多错误了,而且所有的宏定义都可以用其他的方式代替,一般情况下更简便,只不过大多初学者以为宏定义看起来似乎很酷,所以初学的时候都喜欢用原创 2014-05-19 20:00:02 · 599 阅读 · 0 评论 -
结构体内可以包含自身的指针(链表实现方法)或 引用 但不可以包含自身变量即递归 (因为这样一来结构体大小就无法确定了)
。。。。。原创 2014-05-29 10:29:29 · 1217 阅读 · 0 评论 -
CString::Find
CString::Find,函数名称,返回此CString对象中与需要的子字符串或字符匹配的第一个字符的从零开始的索引;如果没有找到子字符串或字符则返回-1。转载 2014-07-02 10:08:47 · 732 阅读 · 0 评论 -
memcpy
c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。中文名函数外文名memcpy原 型void * memcpy();功 能始拷贝n个字节返回值指向dest的指针目录1函数原型2功能3所需头文件4返回值5说明6函数实现▪ 微软中:▪ co转载 2014-09-04 19:57:31 · 581 阅读 · 0 评论 -
堆栈
在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆,列队优先,先进先出[1] 。栈,后进先出(Last-In/First-Out)。转载 2014-09-01 12:42:09 · 524 阅读 · 0 评论 -
作用域 生存期 static extern..........
static(c中定义的关键字1、被其修饰者 外部无法使用(相反的都可以使用extern在外部使用) 2、函数局部变量使用成为静态的放入静态池-生存期改变。c++进行了扩充,使它在类中有了特殊作用)原创 2014-09-01 15:36:26 · 982 阅读 · 0 评论 -
Lambda表达式
ISO C++ 11 标准的一大亮点是引入Lambda表达式。基本语法如下:[capture list] (parameter list) ->return type { function body }[1] 其中除了“[ ]”(其中捕获列表可以为空)和“复合语句”(相当于具名函数定义的函数体),其它都是可选的。它的类型是唯一的具有成员operator()的非联合的类类型,称为闭包转载 2014-09-15 11:54:06 · 555 阅读 · 0 评论 -
可变参数函数 可变参数宏
用可变参数宏(variadic macros)传递可变参数表你可能很熟悉在函数中使用可变参数表,如:void printf(const char* format, …);直到最近,可变参数表还是只能应用在真正的函数中,不能使用在宏中。C99编译器标准终于改变了这种局面,它允许你可以定义可变参数宏(variadic macros),这样你就可以使用拥有可以变化的参数表的宏转载 2014-09-15 15:17:15 · 711 阅读 · 0 评论 -
sizeof 和 strlen
常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度,如果是对指针,结果则会不一样的: char* str = "abacd"; sizeof(str) //结果 4 --->str是指向字符串常量的字符指针,sizeof 获得的是一个指针所占的空间,应该是长整型的,所以是4; sizeof(*str) //结果 1 --->*str是第一个字符,其实就是转载 2014-09-04 19:58:43 · 485 阅读 · 0 评论 -
&按位与 | 按位或 ^ 按位异或
&是按位与(双目运算符,需要2个操作数)|是按位或(双目运算符)~是按位非(单目运算符)1&0=0, 0&1=0, 0&0=0, 1&1=11|0=1, 0|1=1, 0|0=0, 1|1=1~1=0,~0=1a|=b等价于a=a|b;同理a&=b等价于a=a&b原创 2014-09-15 11:20:12 · 781 阅读 · 0 评论 -
%d的格式控制
针对%d的格式输出,主要可以用一个公司来表示。 (1)%[-1][0]m.nd,这个用作控制整数的输出。首先是m用来控制输出项的总宽度,如果输出项的宽度小于m,则会通过空格补充,如果宽度大于m,则以实际宽度为准。 其次,n的作用是用来表示输出的最小规定有效位数,如果不足,则用0来补充,例如n=3,而实际数据为整数2,则结果为002.如果实际数据为1023,则输出也为转载 2014-07-16 11:10:08 · 849 阅读 · 0 评论 -
cc
char frameName[100] = {}; sprintf(frameName,"redOrBlack/card_%02d.png",r);原创 2014-05-07 17:49:39 · 614 阅读 · 0 评论 -
c++
赋值号左侧不能为运算原创 2014-05-14 08:45:14 · 523 阅读 · 0 评论 -
宏
定义为某个值 以便后面修改这个值时不用修改其它地方代码 只要修改这个宏的定义就可以了 如一个软件的多语言版本等 #define 标识符 字符串其中的标识符就是所谓的符号常量,也称为“宏名”掌握"宏"概念的关键是“换”无参数宏定义————其中# define之后的标识符称为宏定义名(简称宏名)# define TRUE 1凡定义之后出现的单词TRUE将用1替代之原创 2013-10-28 17:18:43 · 612 阅读 · 0 评论 -
虚函数
简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virtual 函数名=0 我们把这样的函数(方法)称为原创 2013-10-28 17:17:29 · 711 阅读 · 0 评论 -
文件读写
文本文件——FILE* file = fopen("xx.txt","xx")//fopen返回值是一个FILE指针 为0则打开失败fputc('w',file);//把字符w写入file 写入成功返回一个int型值 写入字符包含在低字节 高字节为0fgetc(file);//成功返回一个int型值 写入字符包含在低字节 高字节为0//从文件读取一个字符 若无变量保存原创 2013-10-28 17:14:30 · 586 阅读 · 0 评论 -
gets getche getch
函数:gets(字符指针) 功能:从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer 指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。 注意:本函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。 如果溢出,多出来的字符将被写入到堆栈原创 2013-10-28 17:16:18 · 874 阅读 · 0 评论 -
模板
当模板类型是数组时,,,,,,,,,,,,,,,,,,,原创 2013-10-28 16:47:49 · 590 阅读 · 0 评论 -
函数的重载
C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。在C++中,没有跨域重载——继承类和基类虽然关系很亲密,但也不能坏了这条规矩。#include using namespace std;class B{ public: int f(int i) { cout re原创 2013-10-30 15:42:04 · 618 阅读 · 0 评论 -
编译过程 前置声明
编译.cpp文件 遇.cpp里的头文件会打开(这相当于把.h文件的内容放在#include ".h"处) 如果出现头文件互包 则这个个打开过程会永无止境 如果没有预编译指令,是会这样的 a.h头上的那个#pragma once就会告诉编译器:老兄,这个你已经编译过了,就不要再浪费力气编译了!那么编译器得到这个信息就会不再编译a.h而转回到编译b.h的余下内容。余下内容用到了a.h 就会原创 2013-11-04 18:20:28 · 593 阅读 · 0 评论 -
&引用取址
当&前有类型符是引用。引用原创 2014-05-15 15:47:05 · 488 阅读 · 0 评论 -
typedef struct
在C中,这个申明后申请结构变量的方法有两种: (1)struct tagMyStruct 变量名 (2)MyStruct 变量名 在c++中可以有 (1)struct tagMyStruct 变量名 (2)MyStruct 变量名 (3)tagMyStruct 变量名原创 2014-05-19 19:56:06 · 511 阅读 · 0 评论 -
尽可能用初始化列表 避免两次构造
初始化和赋值对内置类型的成员没有什么大的区别,像上面的任一个构造函数都可以。对非内置类型成员变量,为了避免两次构造,推荐使用类构造函数初始化列表。但有的时候必须用带有初始化列表的构造函数:1.成员类型是没有默认构造函数的类。若没有提供显示初始化式,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。2.const成员或引用类型的成员。因为cons原创 2014-05-19 20:10:24 · 726 阅读 · 0 评论 -
string 常用函数
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类的字符操作:c原创 2014-05-20 15:16:46 · 437 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别(转过无数次的文章) 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释转载 2014-05-14 08:46:04 · 457 阅读 · 0 评论 -
C++中的typeid关键字
用以返回一个变量或数据类型的“类型”。用法如下:coutint a;cout输出如下:intint如果有类A,且有虚函数,类B,C,D都是从类A派生的,且都重定义了类A中的虚函数,这时有类A的指针p,再把对象类B的对象的地址赋给指针p,则typeid(p).name()将返回的类型将是A*, 因为这里的p表示的是一个指针,该指针是类型为A的指针, 所以返回A转载 2014-12-26 08:27:10 · 494 阅读 · 0 评论