主页

【C++笔记】09 类

1 访问标号(public/private/protect) 访问标号public、private、protect可以多次出现在类定义中,给定的访问标号应用到下一个访问标号出现时为止。 struct默认的访问标号为public,class默认的访问标号是private。 类对其成员的访问形式主要有以下两种: 内部访问:由类中的成员函数对类的成员的访问; 对象访问:在类外部,通过类的对象对类的成员的访问。 注:类的成员函数(内部访问)以及友元函数可以访问类中所有成员,但是在类外通过类的对象(对象访问)只能访问该类的公有成员。 2 类的成员 2.1 类的成员函数 在类中声明成员函数是必需的,而定义成员函数则是可选的。 注:在类内部定义的函数默认为inline(...

阅读更多

【C++笔记】08 指针与引用

1 指针 1.1 指针的声明 string *ps1; 一个有效的指针必然是以下三种状态之一: 保存一个特定对象的地址; 指向某个对象后面的另一个对象; 0值。 若指针保存0值,表明它不指向任何对象。未初始化的指针是无效的,直到给该指针复制后,才可使用它。 1.2 typedef C语言允许使用typedef说明一种新类型名,来代替已有类型名,形式为: typedef 类型名 标识符; 其中类型名是在此语句前已有的类型标识符,标识符是用作新类型名的用户自定义标识符。例如: typedef float REAL; typedef char* PCHAR; REAL a,b; //等价于float a,b; PCHAR p; //等价于char* p...

阅读更多

【C++笔记】07 函数

1 函数的声明与定义 函数声明原型的结构是: 返回值类型 函数名(参数表); 函数定义的格式为: 返回值类型 函数名(参数表) { 语句块; } 2 参数传递 函数的参数分为形参和实参两种: 形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。 实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 形参和实参的功能是做数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参,从而实现主调函数向被调函数的数据传送。 一般来说,函数调用时, C中有两种传递:值传递和指针传递(传递地址)。 注:严格来说,只有一种传递(值传递),指针传递也是按值传递的,复制的是...

阅读更多

【C++笔记】06 C预处理器、作用域、static、const以及内存管理

1 C预处理器 C语言的预处理主要有三个方面的内容: 宏定义与宏替换 文件包含 条件编译 1.1 宏定义与宏替换 宏语句一般以#define开头,分为两种:符号常量的宏定义和带参数的宏定义。 符号常量的宏定义与宏替换 #define 标识符 字符串 其中标识符为宏名称,宏定义末尾不加分号。 注:由于预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,故预处理是不做语法检查的。且宏定义不分配内存,变量定义才会分配内存。 带有参数的宏定义与宏替换 #define 标识符(参数列表)字符串 对带有参数的宏定义进行宏替换时,不仅对宏标识符做字符替换,还必须做...

阅读更多

【C++笔记】05 运算符及其优先级

1 表达式及语句 表达式:由操作数和运算符组成。例如:算术表达式A+B是由操作数A、B和二元运算符‘+’组成。 语句:语句通常以分号结尾,从功能上说,语句大体可分为执行性语句和说明性语句两大类。执行性语句旨在表述程序的动作,又可分为赋值语句、控制语句和输入输出语句。说明性语句旨在定义各种不同数据类型的变量或运算。 2 赋值语句 在赋值语句A=B中,对赋值运算符“=”右边的B,我们需要的是它的值(称为右值),对左边的A,我们需要的是它所代表的存储单元(地址)(称为左值)。 赋值运算符的左操作数必须是非const的左值。 与其他二元操作符不同,赋值操作具有右结合特性,当表达式含有多个赋值操作时,从右向左结合。多个赋值操作中,各变量必须具有相同的数据类型,或者具有可转换为同一类型...

阅读更多

【C++笔记】04 结构体、共用体与枚举

1 结构体 struct 结构体相比于数组,有以下两点不同: 结构体可以在一个结构中声明不同的数据类型; 相同的结构体变量之间可以相互赋值。 C++中struct具有很多class的功能,但也存在不同点: class的成员访问权限默认为private,而struct成员的访问权限默认为public; struct不能定义无参的构造函数。 1.1 结构体定义 定义结构体类型变量的一般形式为: struct 类型名{ 类型名1 成员名1; 类型名2 成员名2; ... 类型名n 成员名n; }; 注:定义结构体类型时,只说明该类型的组成情况,并没有分配空间,只有当定义属于结构体类型的变量时,系统才会分配空间给该变量。 ...

阅读更多

【C++笔记】03 字符串处理函数

1 strlen(s) 功能:返回s的长度,不包括字符串结束符 null size_t strlen(const char* str) { assert(str != nullptr); size_t ret = 0; while((*str++)!= '\0') ret++; return ret; } size_t strlen(const char* str) { assert(str != nullptr); return *str == '\0' ? 0 : (1 + strlen(++str)); } 注:若有char ca1[]={'C','+','+'};//末尾没有null字...

阅读更多