当前搜索:

【C++】深入理解模板

1、简介模板是一种代码复用方式,其它的代码复用方式还包括继承和组合。当我们使用模板时,参数由编译器来替换,这非常像原来的宏方法,但却更清晰、更容易使用。在C++中,模板实现了参数化类型的概念,放在一对尖括号中,通过template这个关键字,告诉编译器随后的定义将操作一个或更多未指明的类型,当由这个模板产生实际代码时,必须指定这些类型以使编译器能够替换它们。下面是一个简单的模板类。template...
阅读(120) 评论(0)

【C++】 运算符重载

1、一元运算符运算符重载是C++的一大特色,以函数重载的形式出现,函数名为关键字operator后跟着一个运算符,这些函数可以作为类的成员函数实现,也可以作为类的友元函数以全局函数的形式实现,而有的操作符只能以其中一种方式实现,因为全局函数没有this指针,所以在参数列表中比成员函数多一个参数。可以重载的一元运算符包括+、-、~、&、!、++、--,例子如下。// Overloading Unary...
阅读(85) 评论(0)

【C++】C++中的C

C++兼容C,但同样的东西,在C++和C中的表现可能不同,下面总结了一些。1、函数空参int f();函数空参时,C表示任意参数,C++表示没有参数。int f(void);C表示没有参数时使用void。2、函数参数标识符int f(int a); int f(int);声明函数时,C和C++都可以省略标识符。int f(int a) {} int f(int) {} // C++定义函数时,C++...
阅读(259) 评论(0)

【C++】深入理解C++的常见关键字

1、autovoid foo() { auto int f = 0; } void foo() { int f = 0; }auto变量即自动变量或局部变量,位于一个进程的地址空间的堆栈段,它们是局限于一个函数的,出现在一个作用域内,进入作用域时自动生成,离开作用域时自动消失,这种变量默认就是auto。2、registerfor (register int i = 0; i < 100; ++i)...
阅读(245) 评论(0)

【C++】链接器及undefined reference的秘密

1、链接器当C或C++要对函数和变量进行外部引用时,根据引用情况,链接器会选择不同的处理方法。如果还未遇到过这个函数或变量的定义,链接器会把它的标识符加到未解析的引用列表中,即undefined reference。如果链接器遇到过这个函数或变量的定义,那么这就是已解决的引用。如果链接器在目标模块中不能找到函数或变量的定义,它将去查找库。库有某种索引方式,链接器不必到库里查找所有目标模块,而只需浏览...
阅读(153) 评论(0)

【C】《C专家编程》核心知识点总结

1、穿越时空的迷雾编译器设计者的金科玉律:效率几乎就是一切,这包括两个方面,编译效率和运行效率,而后者起决定性作用。有很多编译优化措施会延长编译时间,但却能缩短运行时间;还有一些优化措施如清除误用代码和忽略运行时检查等,既能缩短编译时间,又能减少运行时间,同时还能减少内存的使用量,但有利就有弊,在于使用者如何权衡。早期C语言的许多特性是为了方便编译器设计者而建立的,如类型系统、数组下标从0而不是1开...
阅读(311) 评论(0)

【C++】cppcheck

1、简介cppcheck是一款用于C/C++的代码静态检查工具,与编译器和其它的分析工具不同,cppcheck不检查代码中的语法错误,主要目的是检查编译器在正常情况下发现不了的错误,即代码中真正的错误或者说运行时错误,也就是计算机术语中的zero false positives,如越界操作、内存泄漏、空指针引用、变量未初始化等等。2、示例test.c示例代码如下:int main() { c...
阅读(441) 评论(0)

【C++】cpplint

1、简介cpplint或cpplint.py是Google开发的一款代码静态检查工具,Python实现,用以检查C++代码是否遵循Google代码规范,还可以发现语法错误。2、示例test.cpp示例代码如下:int foo(int a) { if (a < 0) { a = 0; } return a; }int bar(int a) { if (a...
阅读(451) 评论(0)

【C】C语言内存函数

C语言内存函数向编程人员提供复制、比较与设置内存块的有效方式,这些函数属于字符串函数,放在库文头文件string.h中声明,C89增补1增加了5个操纵宽字符数组的新函数。string.h中的这些函数名称以mem开头,内存块在标准C语言中用void*类型指针指定,常用函数原型如下:void* memchr(const void *ptr, int val, size_t len); int memcm...
阅读(487) 评论(0)

【C】C语言字符处理函数

字符处理有两类函数:分类和转换,每个字符分类函数的名称以is开头,返回int类型的值,在参数为指定类时为非0值即真,否则为0即假,每个字符转换函数的名称以to开头,返回int类型的值,表示一个字符或EOF。字符处理函数在库头文件ctype.h中声明,另外,C89增补1定义了对宽字符进行运算的分类与转换函数,与普通字符对应,在头文件wctype.h中声明。字符分类处理函数具体如下:// ctype.h...
阅读(489) 评论(0)

【C】C语言核心知识点总结(Reference Manual)

1、词法(1)字符集——C语言字符集使用ISO/IEC 10646基本拉丁字符集,包括52个大小写拉丁字母,10个数字,空格,水平制表符HT,垂直制表符VT,换页符FF,以及29个特殊字符,它们是感叹号!,数字号#,百分号%,折音符^,和号&,星号*,左括号(,下划线_,右括号),连字符-,加号+,等号=,波浪号~,左方括号[,右方括号],撇号',竖线|,反斜杠\,分号;,冒号:,引号",左花括号{...
阅读(748) 评论(0)

【C】表达式

C语言表达式——(1)可以作为左值的非数组表达式(2)要求某个操作数为左值的运算符(3)运算符的优先级与结合性(4)二元运算符表达式(5)按位运算符(6)建议复杂的表达式最好使用圆括号进行分组,而不要依靠默认的操作符优先级与结合性;使用逻辑与、逻辑或的短路特性是个很好的选择。...
阅读(398) 评论(0)

【C】base64

base64可以理解为一种编码方式或加密方式,基本原理是:对于一个给定的字符串,先转成对应的标准ASCII码,一个字符(字节)占8个二进制位,从头开始,每三个字节分为一组,这样一组三个字节共24个二进制位,然后再把这24个二进制位分为四组,每组6个二进制位,高位补两个0,结果就从三字节字符串变成了四字节字符串。之所以叫base64,可以看出,新的字节表示范围从0到63共64个字符,对应关系如下:在转...
阅读(500) 评论(0)

【C++】std::vector源码浅析

std::vector是stl标准模板库中的一个序列容器,其源码实现有几个特点:(1)C++中include的标准头文件是没有“.h”后缀的,其实这是C++的一层包裹,内部实现还是在“.h”文件中完成的,以我们include的vector为例,其中还会include一些真正的vector实现文件,如“stl_vector.h”。(2)vector的实现有一些内部使用的函数和数据类型,它们以下划线“_...
阅读(1801) 评论(0)

【C】glibc中字符串处理的几个函数实现分析

在C语言中,我们经常会用到字符串处理的几个函数,如strcat、strcmp、strcpy等,那么这些函数是怎么实现的呢?strcat——char* strcat(char *dest, const char *src);字符串拼接,把src追加到dest后面。测试用例:#include #include int main() { char a...
阅读(596) 评论(0)
32条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:326219次
    • 积分:6057
    • 等级:
    • 排名:第4705名
    • 原创:257篇
    • 转载:0篇
    • 译文:5篇
    • 评论:45条
    Make Others Better.
    博客专栏
    文章分类