![](https://img-blog.csdnimg.cn/20191206034316236.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
C/C++ 复习笔记
Mirst
W.
展开
-
C++中“.”和“->”的使用区别
这两个符号都是C++成员运算符,主要用于确定类对象和成员之间的关系,用于引用类、结构和共用体的成员。点运算符“.”应用于实际的对象,箭头运算符“->”与一个指针对象的指针一起使用。class A{public: int a = 0;};int main(){ A b; A *p = &b; b.a; //类类型的对象访问类的成员 p->a; //类类型的指针访问类的成员 *p.a; //等价于p->a}...原创 2020-12-13 18:35:54 · 1009 阅读 · 1 评论 -
对LNode*与LinkLinst等价却不等用的理解
LinkList等价于LNode*连个代码段是等效的,同时LinkList等价于LNode*LinkList与LNode*本质上没有区别,只是前者强调这是链表,后者强调这是结点合适的地方使用合适的名字,代码可读性更高!!!typedef struct LNode{ ElemType data; struct LNode* next;}LNode, * LinkList;struct LNode{ ElemType data; struct LNode* next原创 2020-12-13 17:19:21 · 2765 阅读 · 2 评论 -
C++中NULL和nullptr的区别
目录一、C程序中的NULL二、C++程序中的NULL三、C++中的nullptr总结:其他:在没有C++ 11的nullptr的时候,我们怎么解决避免这个问题呢?一、C程序中的NULL在C语言中,NULL通常被定义为:#define NULL ((void *)0)所以说NULL实际上是一个空指针,如果在C语言中写入以下代码,编译是没有问题的,因为在C语言中把空指针赋给int和char指针的时候,发生了隐式类型转换,把void指针转换成了相应类型的指针。int .转载 2020-12-13 17:05:25 · 299 阅读 · 0 评论 -
C++中,引用和指针的区别是什么?
目录1. 引用的底层实现方式1.1 从对象出发对引用和指针的理解2. 引用与指针的区别2.12.22.32.4引用是C++引入的重要机制(C语言没有引用),它使原来在C中必须用指针来实现的功能有了另一种实现的选择,在书写形式上更为简洁。那么引用的本质是什么,它与指针又有什么关系呢?1. 引用的底层实现方式引用被称为变量的别名,它不能脱离被引用对象独立存在,这是在高级语言层面的概念和理解,并未解释引用的实现方式。常见错误说法是“引用”自身不是一个变量,甚至编译器可以不以原创 2020-12-13 16:48:52 · 320 阅读 · 0 评论 -
C++中的void*理解
目录1. void *是什么?1.1 跳跃力什么时候定?2. void*详解2.1 void*可以指向任何类型的地址,但是带类型的指针不能指向void*的地址2.2 void*指针只有强制类型转换以后才可以正常取值2.3 void*指针变量和普通指针一样可以通过等于0或者NULL来初始化,表示一个空指针2.4 当void*指针作为函数的输入和输出时,表示可以接受任意类型的输入指针和输出任意类型的指针2.5 和void的区别3.作用及典型应用3.1 函数传参时不确定类.原创 2020-12-13 15:55:18 · 23214 阅读 · 11 评论 -
include
#include叫做“文件包含”。它的功能是用来指定文件的全部内容替换程序中的命令行,从而使指定的文件与当前源文件连成一个源文件。有如下两种形式:#include "文件名"#include <文件名>件包含这两种形式都可以使用,但是有以下几种区别:使用尖括号:表示编译系统根据系统头文件存放的目录路径去搜索系统头文件,而不是在源文件目录去查找;使用双引号:表示编...转载 2019-12-16 10:44:02 · 374 阅读 · 0 评论 -
int main( int argc, char* argv[] )
带形参的main函数,如 main( int argc, char* argv[], char **env ) ,是UNIX、Linux以及Mac OS操作系统中C/C++的main函数标准写法,并且是血统最纯正的main函数写法。在如今的Visual Studio编译器中,main()函数带有参数argc和argv或者不带,即无论是否在函数体中使用argc和a...原创 2019-12-16 10:32:06 · 1268 阅读 · 0 评论 -
#ifndef/#define/#endif
0 定义#ifndef x//先测试x是否被宏定义过#define x//如果没有宏定义下面就宏定义x并编译下面的语句...#endif//如果已经定义了则编译#endif后面的语句这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的一种----条件编译。 C语言在对程序进...原创 2019-12-16 09:56:25 · 385 阅读 · 0 评论 -
九 C 结构体
C结构体C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:Title Author Subject Book ID定义结构为了定义结构,您必须使用struct语句。struct 语句定义了一个包含多个成员的...原创 2019-12-17 09:24:57 · 297 阅读 · 0 评论 -
八 C 函数指针,回调函数,字符串
函数指针函数指针是指向函数的指针变量。通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。函数指针可以像一般函数一样,用于调用函数、传递参数。函数指针变量的声明:typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型以下实例声明了函数指针变量 p,指向函数 max:#include...原创 2019-12-17 09:24:50 · 383 阅读 · 0 评论 -
strcpy函数实现
深圳天地宽视面试题:strcpy函数实现主体功能实现返回p是为了方便计数#include <stdio.h>char* strcpy(char *strDest, const char* strSrc){ char *p=NULL; if(strDest == NULL || strSrc == NULL) { return...原创 2019-12-17 09:25:08 · 990 阅读 · 0 评论 -
七 C 指针
C指针通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:#include <stdio.h> int main (){ int var1; ch...原创 2019-12-16 13:13:50 · 288 阅读 · 0 评论 -
深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。2 指针。 指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的地址。。由于地址也是整数,在32位平台下,指针默认为32位。。3 指针的指向? 指...原创 2019-11-29 01:13:45 · 774 阅读 · 0 评论 -
float 与 double 类型区别
float 单精度浮点数在机内占 4 个字节,用 32 位二进制描述。double 双精度浮点数在机内占 8 个字节,用 64 位二进制描述。浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。数符占 1 位二进制,表示数的正负。指数符占 1 位二进制,表示指数的正负。尾数表示浮点数有效数字,0.xxxxxxx, 但不存开头的 0 和点。指数存指数的有效...转载 2019-11-28 02:13:14 · 1221 阅读 · 0 评论 -
六 C 数组与枚举
C数组C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单...原创 2019-11-28 02:30:56 · 570 阅读 · 0 评论 -
C/C++ 中 static 的用法全局变量与局部变量
1. 什么是static?static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。1.1 static 的引入我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但定...转载 2019-11-28 01:12:17 · 579 阅读 · 0 评论 -
五 C 函数与作用域规则
C函数函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数。您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。C 标准库提供了大量的程序可以调...原创 2019-11-28 01:15:50 · 601 阅读 · 0 评论 -
四 C(补充二) 嵌套循环
嵌套循环使用了一个嵌套的 for 循环来查找 2 到 100 中的质数:#include <stdio.h> int main (){ /* 局部变量定义 */ int i, j; for(i=2; i<100; i++) { for(j=2; j <= (i/j); j++) if(!(i%j)) br...原创 2019-11-28 00:29:17 · 427 阅读 · 0 评论 -
四 C(补充一) switch 语句 - 闰年与月份天数示例
Cswitch 语句switch语句必须遵循下面的规则:switch语句中的expression是一个常量表达式,必须是一个整型或枚举类型。 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。 case 的constant-expression必须与 switch 中的变量具有相同的数据类型,且必须是一个常...原创 2019-11-28 00:08:21 · 871 阅读 · 0 评论 -
四 C 判断 与循环
C判断C 语言把任何非零和非空的值假定为true,把零或null假定为false。下面是大多数编程语言中典型的判断结构的一般形式:判断语句语句 描述 if 语句 一个if 语句由一个布尔表达式后跟一个或多个语句组成。 if...else 语句 一个if 语句后可跟一个可选的else 语句,else 语句在布尔表达式为假时执行。 ...原创 2019-11-28 00:37:54 · 504 阅读 · 0 评论 -
三 C 存储类 运算符
C存储类存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类:auto register static externauto 存储类auto存储类是所有局部变量默认的存储类。{ int mount; auto int month;}上面的实例定义了两个带有相同存储类的变量,...原创 2019-11-27 23:35:53 · 410 阅读 · 0 评论 -
二 C 数据类型 变量 常量
C数据类型在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。C 中的类型可分为以下几种:序号 类型与描述 1 基本类型: 它们是算术类型,包括两种类型:整数类型和浮点类型。 2 枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。...原创 2019-11-27 22:04:01 · 785 阅读 · 0 评论 -
C 基础 一
C 语言是一种通用的、面向过程式的计算机程序设计语言。#include <stdio.h> int main(){ /* 我的第一个 C 程序 */ printf("Hello, World! \n"); return 0;}实例解析:所有的 C 语言程序都需要包含main()函数。 代码从main()函数开始执行。 /* ....原创 2019-11-27 21:22:49 · 642 阅读 · 0 评论 -
C++ bool 用bool吧!
为什么要用bool类型因为我曾经看到过C++程序员,使用着C++的编译器,却仍然在使用BOOL、TRUE、FALSE等宏来表达现实世界中的二值事物,令我很不解,前去询问才知是“习惯”。显然,它以前是使用C语言编程的,而且使用这些宏做了很多事,也从来没有感觉到不好。简言之,如果标准不定义bool,程序员就会自己typedef,那么有的会用char,有的会用unsigned int,有的会用signed int,那就头大了。类型名可以是 BOOL/Bool/bool/BOOLEAN/Boolean/bo原创 2020-09-20 00:20:24 · 1324 阅读 · 0 评论 -
C++ 接口(抽象类)
C++接口(抽象类)接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:class Box{ public: // 纯虚函数 ...原创 2019-12-13 15:12:51 · 316 阅读 · 0 评论 -
C++ 多态与数据抽象与数据封装
C++多态多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。#include <iostream> using namespace std; class Shape { protected: int width, hei...原创 2019-12-13 15:08:05 · 380 阅读 · 0 评论 -
C++ 重载运算符和重载函数
C++重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,...原创 2019-12-13 14:47:35 · 614 阅读 · 0 评论 -
C++ 继承
C++继承面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了is a关系。例如,哺乳动物是动物,狗是哺乳动物...原创 2019-12-13 14:11:07 · 334 阅读 · 0 评论 -
C++ 类访问修饰符
C++类访问修饰符数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记public、private、protected来指定的。关键字public、private、protected称为访问修饰符。一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始...原创 2019-12-13 13:56:54 · 488 阅读 · 0 评论 -
C++ 类 & 对象
C++类 & 对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。C++ 类定义定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称...原创 2019-12-13 13:41:20 · 386 阅读 · 0 评论 -
C++ 数据结构
C++数据结构C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:Title :标题 Author :作者 Subject :类目 Book ID :书的 ID定义结构为了定义结构,您必须使用str...原创 2019-12-13 13:16:47 · 344 阅读 · 0 评论 -
C++ 引用
C++引用引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++ 引用 vs 指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。 引用必须在创建时被初始化。...原创 2019-12-13 11:56:59 · 327 阅读 · 0 评论 -
C++ 指针
C++指针每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。type *var-name;int *ip; /* 一个整型的指针 */double *dp; /* 一个 double 型的指针 */float *fp; ...原创 2019-12-13 10:32:05 · 316 阅读 · 0 评论 -
C++ 字符串
C++字符串C++ 提供了以下两种类型的字符串表示形式:C 风格字符串 C++ 引入的 string 类类型C 风格字符串C风格的字符串起源于 C语言,并在 C++ 中继续得到支持。字符串实际上是使用null字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组...原创 2019-12-13 10:09:21 · 489 阅读 · 0 评论