c面试的知识点

合集下载

c语言面试知识点

c语言面试知识点

c语言面试知识点C语言面试知识点一、基础知识1. C语言是一种通用的、面向过程的编程语言,广泛应用于系统软件和应用软件的开发。

2. C语言的特点包括语法简洁、执行效率高、可移植性强等。

3. C语言的数据类型包括基本数据类型(整型、浮点型、字符型等)和派生数据类型(数组、结构体、联合体、枚举等)。

4. C语言的运算符包括算术运算符、关系运算符、逻辑运算符等。

5. C语言的控制语句包括条件语句(if-else语句、switch语句)、循环语句(for循环、while循环、do-while循环)和跳转语句(break语句、continue语句、goto语句)。

二、指针与内存管理1. 指针是C语言中的重要概念,它存储了一个变量或者对象的内存地址。

2. 通过指针可以实现对变量的间接访问和修改,提高程序的灵活性和效率。

3. 动态内存管理是C语言中的重要部分,通过malloc、calloc和realloc函数可以动态分配内存空间,通过free函数释放内存空间。

4. 内存泄漏是指程序在动态分配内存后未释放,导致内存无法再被使用,造成资源浪费。

5. 野指针是指指向无效或未分配内存的指针,访问野指针会导致程序崩溃或产生不可预料的行为。

三、函数和模块化编程1. 函数是C语言中的基本组织单位,可以将程序划分为多个函数,提高代码的可读性和可维护性。

2. 函数的定义包括函数名、参数列表、返回值类型和函数体,函数的声明在调用函数之前进行。

3. 递归是指函数调用自身的过程,递归函数在解决一些问题时具有简洁的表达能力。

4. 模块化编程是将程序划分为多个独立的模块,每个模块负责特定的功能,便于代码的复用和维护。

四、文件操作1. 文件是C语言中的重要数据存储方式,可以通过文件操作函数对文件进行读写操作。

2. 文件操作函数包括打开文件(fopen)、关闭文件(fclose)、读取数据(fread)、写入数据(fwrite)等。

3. 文件指针是指向文件的指针变量,可以通过文件指针控制文件的读写位置。

C语言程序员面试宝典

C语言程序员面试宝典

C语言程序员面试宝典1. 概述C语言是一门广泛应用于编程领域的程序设计语言,因其简洁高效的特点而备受程序员喜爱。

在求职面试中,作为一名C语言程序员,必须具备扎实的语法基础和良好的编程能力。

本文将为你提供一些面试的宝典,帮助你在面试中脱颖而出。

2. 基础知识在C语言面试中,基础知识扮演着重要的角色。

以下是一些常见的基础知识点,你可以在准备面试过程中加以学习和巩固。

2.1 数据类型C语言提供了多种数据类型,包括整型、浮点型、字符型等。

你需要熟悉每种数据类型的特点与使用场景,并能够灵活运用。

2.2 变量与常量变量与常量是C语言的基本元素,对于面试来说,你需要了解变量的定义、声明和使用方式,以及常量的分类和使用方法。

2.3 运算符C语言提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符等。

你需要理解每种运算符的功能和使用规则。

2.4 控制流程控制流程是C语言中的重要概念,包括条件语句、循环语句和跳转语句。

你需要掌握这些语句的语法和运用场景。

3. 常见问题在面试中,除了基础知识外,面试官还会提问一些常见问题,以考察你的思维能力和问题解决能力。

以下是一些常见问题及其解答示例,供你参考。

3.1 C语言与C++的区别是什么?答:C语言与C++都是面向过程的编程语言,但C++在C语言的基础上添加了面向对象的特性。

C++支持类和对象的封装、继承和多态等特性,而C语言则不支持。

另外,C++还有异常处理和模板等功能,这些都是C语言所没有的。

3.2 请解释指针和引用的区别。

答:指针和引用都属于C语言中的变量类型。

指针可以存储某个变量的地址,通过解引用操作可以访问该地址处的内容;引用则是某个变量的别名,对引用的操作会影响到原变量的值。

指针可以为空或者指向其他对象,而引用必须初始化,并且一旦初始化后就不能再引用其他对象。

4. 项目经验在面试过程中,你可能会被要求介绍你的项目经验。

这是展示你实际编程能力和解决问题能力的好机会。

面试中常问的c 知识

面试中常问的c 知识

面试中常问的C语言知识1. 介绍C语言C语言是一种通用的高级编程语言,由美国计算机科学家丹尼斯·里奇于1972年在贝尔实验室开发。

C语言具有高效、灵活和可移植的特点,广泛应用于系统软件、嵌入式系统和游戏开发等领域。

2. C语言的数据类型C语言提供了几种基本的数据类型,包括整数类型(int、short、long)、浮点数类型(float、double)、字符类型(char)以及空类型(void)。

这些数据类型可以组合使用,形成更复杂的数据结构。

3. C语言的控制流程C语言提供了一系列的控制流程语句,用于控制程序的执行顺序。

常见的控制流程语句包括条件语句(if-else、switch)、循环语句(for、while、do-while)以及跳转语句(break、continue、goto)等。

4. C语言的函数C语言中的函数是一段完成特定任务的代码块,可以通过函数来组织和重用代码。

函数由函数名、参数列表、返回类型和函数体组成。

C语言支持递归函数,可以在函数内部调用自身。

5. C语言的指针指针是C语言的一个重要概念,它是内存中某个变量或对象的地址。

通过指针,可以直接访问和修改内存中的数据。

C语言提供了指针变量的声明、赋值和解引用等操作,可以实现更灵活的内存管理和数据传递。

6. C语言的数组数组是一种存储相同类型数据的集合,它由连续的内存单元组成。

C语言中的数组可以存储基本数据类型(如整数、浮点数、字符等),也可以存储自定义的数据结构。

数组的元素通过索引来访问,索引从0开始。

7. C语言的结构体结构体是一种用户自定义的数据类型,它可以包含不同类型的数据成员。

C语言中的结构体可以用来表示复杂的实体,如学生、员工等。

结构体的数据成员可以通过“.”操作符来访问。

8. C语言的文件操作C语言提供了一组函数来进行文件的读写操作。

通过文件操作,可以读取外部文件中的数据,也可以将程序的输出写入到文件中。

文件操作可以实现数据的长期存储和共享。

c c 面试知识点

c c 面试知识点

C语言和C++面试知识点一、基本概念1.1 C语言和C++的区别C语言是一种过程化编程语言,而C++是在C语言的基础上扩展出的一种面向对象编程语言。

C++在C语言的基础上增加了类、封装、继承和多态等面向对象特性。

1.2 编译型和解释型语言C语言和C++都是编译型语言,需要通过编译器将源代码编译成可执行文件。

而解释型语言则是在运行时逐行解释执行源代码。

1.3 程序的入口函数C语言的入口函数为main(),而C++则可以有多个入口函数。

二、数据类型2.1 基本数据类型C语言和C++都支持基本数据类型,如整型、浮点型、字符型等。

2.2 自定义数据类型C语言可以使用typedef关键字定义自定义数据类型,而C++可以使用class 或struct关键字定义类和结构体。

2.3 引用类型C语言中没有引用类型的概念,而C++引入了引用类型。

三、控制结构3.1 条件语句C语言和C++都支持条件语句,如if、else、switch语句等。

3.2 循环语句C语言和C++都支持循环语句,如for、while、do-while语句等。

3.3 跳转语句C语言和C++都支持跳转语句,如break、continue、goto语句等。

四、函数4.1 函数的定义和调用C语言和C++都支持函数的定义和调用,函数是程序的基本模块化单元。

4.2 函数参数C语言和C++都支持函数参数,可以通过值传递或引用传递的方式传递参数。

4.3 函数重载C++支持函数重载的特性,即可以定义同名但参数列表不同的函数。

五、指针和引用5.1 指针的概念和使用C语言和C++都支持指针,指针是存储变量地址的变量。

5.2 指针和数组C语言和C++中可以通过指针来操作数组。

5.3 引用的概念和使用C++引入了引用类型,引用是变量的别名。

六、面向对象编程6.1 类和对象的概念C++支持面向对象编程,类是对象的抽象模板,而对象是类的实例。

6.2 封装、继承和多态C++支持封装、继承和多态等面向对象的特性。

c语言 面试 知识点

c语言 面试 知识点

C语言面试知识点在面试中,C语言是一个关键的技术面试题目。

以下是一些C语言面试的常见知识点,希望能够帮助你在面试中更好地准备。

数据类型C语言中有几种基本的数据类型,包括整数、浮点数和字符。

以下是一些常见的数据类型:•整数类型:int、short、long•浮点数类型:float、double•字符类型:char在面试中可能会问到这些数据类型的大小和范围,以及如何在程序中使用它们。

要准备好回答这些问题,你可以查阅相关的C语言参考资料,以了解这些数据类型的具体细节。

控制流程在C语言中,有几种常见的控制流程语句,用于控制程序的执行流程。

以下是一些常见的控制流程语句:•条件语句:if、else if、else•循环语句:for、while、do-while•跳转语句:break、continue、goto在面试中,你可能会被要求解释这些控制流程语句的用法,并且要能够编写一些简单的程序来展示你对这些语句的理解。

函数函数是C语言中的重要概念之一,它允许我们将代码块组织成可重用的模块。

以下是一些关于函数的常见问题:•如何声明和定义函数?•如何调用函数?•如何传递参数给函数?•如何返回值?在面试中,你可能会被要求编写一个带有参数和返回值的函数,并且要能够解释函数的作用和用法。

数组和指针在C语言中,数组和指针是非常重要的概念。

以下是一些与数组和指针相关的常见问题:•如何声明和定义数组?•如何访问数组的元素?•如何使用指针来操作数组?•如何传递数组给函数?在面试中,你可能会被要求编写一些使用数组和指针的程序,并且要能够解释数组和指针在C语言中的作用和用法。

结构体和联合体结构体和联合体是C语言中用于组织复杂数据结构的重要工具。

以下是一些与结构体和联合体相关的常见问题:•如何声明和定义结构体?•如何访问结构体的成员?•如何使用联合体?•如何传递结构体给函数?在面试中,你可能会被要求编写一些使用结构体和联合体的程序,并且要能够解释结构体和联合体在C语言中的作用和用法。

c 面试必备知识点

c 面试必备知识点

C 面试必备知识点1. C 语言基础1.1 数据类型C 语言中的数据类型包括基本类型(如整型、浮点型、字符型)和派生类型(如指针、数组、结构体)。

了解每种类型的定义、取值范围以及内存占用是面试中的必备知识。

1.2 控制语句C 语言中常用的控制语句有条件语句(if-else、switch)、循环语句(for、while、do-while)、跳转语句(break、continue、goto)。

熟悉这些语句的使用场景以及注意事项对于解决实际问题非常重要。

1.3 函数函数是 C 语言的重要组成部分,了解函数的定义、声明、调用以及参数传递方式是面试中常见的问题。

此外,还需要熟悉递归函数的原理和使用方法。

1.4 内存管理C 语言中的内存管理需要手动进行,包括内存的申请和释放。

了解堆、栈、静态存储区的概念,以及动态内存分配函数(如malloc、calloc、realloc、free)的使用是必备知识。

1.5 字符串操作字符串是面试中经常涉及到的数据类型,熟悉字符串的表示方法、常用的字符串操作函数(如strcpy、strcat、strlen、strcmp)以及字符串的常见问题(如回文串判断、字符串反转)是必要的。

2. C 语言进阶2.1 指针指针是 C 语言的重要特性,理解指针的概念、用途以及指针和数组、指针和函数的关系对于解决复杂问题非常重要。

2.2 结构体和联合体结构体和联合体是 C 语言中用来定义复杂数据类型的关键字,掌握结构体和联合体的定义、访问方式以及内存对齐的知识点是面试中经常被问到的。

2.3 文件操作C 语言中的文件操作通常使用标准库函数(如fopen、fclose、fread、fwrite)来实现。

了解文件的打开和关闭、读写文件内容以及文件指针的移动等操作是面试中可能会被问到的。

2.4 预处理器和编译过程C 语言在编译之前经过预处理、编译、汇编和链接等过程。

了解预处理器的作用、常用的预处理指令(如#include、#define)以及编译过程中的优化技术对于理解 C 语言底层原理非常有帮助。

C的面试准备掌握必备的编程知识

C的面试准备掌握必备的编程知识

C的面试准备掌握必备的编程知识C语言是一门经典的编程语言,广泛应用于各个领域。

对于准备面试的人来说,掌握C语言的基础知识是必不可少的。

本文将从语法、数据类型、函数、指针和内存管理等方面介绍C语言的必备编程知识,帮助读者在面试中脱颖而出。

一、语法基础在面试中展现对C语言基础语法的掌握是非常重要的。

以下是几个常见的考察点:1. 数据类型:C语言提供了多种数据类型,如整型、字符型、浮点型等。

面试官可能会问你不同数据类型的范围和存储方式。

2. 运算符:了解C语言的各种运算符及其优先级是必要的。

如算术运算符、关系运算符、逻辑运算符等。

3. 控制语句:掌握C语言的条件语句(if-else、switch)和循环语句(for、while)的使用方法,能够写出流程控制的程序。

二、数据类型和存储C语言中的数据类型对于编程非常重要。

以下是一些需要掌握的知识点:1. 整型和浮点型:了解不同整型和浮点型的存储大小和范围,并了解如何进行类型转换。

2. 字符和字符串:掌握字符和字符串的表示方式、存储方式以及常用操作函数,如strcpy、strcat等。

3. 数组:了解数组的定义和使用方法。

常见的问题包括多维数组、数组名和指针的关系等。

三、函数和指针函数和指针是C语言中比较重要的概念,也是面试中常见的考点。

1. 函数:了解函数的定义、调用和参数传递。

能够理解函数的返回类型、形参和实参的关系,并能够编写简单的函数。

2. 指针:理解指针的概念和作用。

能够正确使用指针对变量进行操作,并了解指针与数组、字符串的关系。

3. 动态内存分配:掌握使用malloc、calloc和free等函数进行内存分配和释放操作,了解常见的内存管理问题。

四、编程规范和调试技巧在面试过程中,编程规范和调试技巧同样很重要。

1. 编程规范:了解C语言的编程规范,如变量命名规范、代码缩进等。

对于大型项目,熟悉和遵守编码风格指南也是一个优点。

2. 调试技巧:熟悉使用调试器进行程序调试,掌握断点、单步执行等调试技巧。

c语言常见面试题

c语言常见面试题

c语言常见面试题C语言作为一种广泛应用于软件开发领域的编程语言,在面试中往往是必考的内容。

掌握常见的C语言面试题是提升自己竞争力的重要一环。

本文将为您介绍一些常见的C语言面试题,以便在求职面试中能够准备充分。

一、C语言基础知识1. 什么是C语言?C语言是一种通用的、过程式的编程语言,由贝尔实验室的Dennis Ritchie于1972年开发。

C语言以其简洁高效的特点成为软件开发的重要基础。

2. C语言的特点有哪些?C语言具有高效、灵活、可移植、功能强大等特点。

其底层控制能力和丰富的函数库使得C语言能够用于系统级开发和嵌入式开发。

3. 请解释C语言中的变量和常量。

变量是用于存储数据的一种数据类型,在程序运行时可以被修改。

常量是程序中的固定值,不可被修改。

4. C语言中数据类型的分类有哪些?C语言的数据类型包括基本数据类型(如整型、浮点型、字符型)、派生数据类型(如数组、结构体、共用体)和空类型(如指针、枚举)。

5. 什么是C语言的运算符?C语言的运算符用于执行各种数学和逻辑运算。

常见的C语言运算符有算术运算符、关系运算符、逻辑运算符、位运算符等。

二、C语言语法和控制流1. 什么是C语言中的条件控制结构?C语言的条件控制结构包括if语句和switch语句,用于根据条件来选择执行不同的代码块。

2. 请解释C语言中的循环控制结构。

C语言中的循环控制结构包括for循环、while循环和do-while循环,用于重复执行一段代码。

3. C语言中如何定义和使用函数?在C语言中,函数是一段完成特定任务的代码块。

定义函数需要指定函数名、返回值类型、参数列表和函数体。

可以通过函数名和参数列表来调用函数并执行其中的代码。

4. 请解释C语言中的指针。

指针是C语言中的一种特殊变量,用于存储其他变量的内存地址。

通过指针可以直接访问或修改目标变量的值。

三、C语言内存管理和文件操作1. 什么是动态内存分配?动态内存分配是指程序运行过程中根据需要在堆中分配空间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c,,面试的知识点篇一:C语言面试重点CSDN:C语言面试重点--绝对好:融合了很多C语言的基本问题,基本概念,能有效应付面试。

1816833 c语言中static 用法总结一、c程序存储空间布局C程序一直由下列部分组成:1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。

3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0.4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信息)。

5)堆——动态存储分。

|-----------|||| 栈 ||-----------| | | || \|/|||||| /|\|| | ||-----------| | 堆 ||-----------| | 未初始化| |-----------| | 初始化||-----------| |正文段 |二、面向过程程序设计中的static1. 全局静态变量在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。

1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)3)作用域:全局静态变量在声明他的文件之外是不可见的。

准确地讲从定义之处开始到文件结尾。

看下面关于作用域的程序:文件分别编译通过,但link的时候中的变量n找不到定义,产生错误。

定义全局静态变量的好处:不会被其他文件所访问,修改其他文件中可以使用相同名字的变量,不会发生冲突。

2. 局部静态变量在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。

1)内存中的位置:静态存储区2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)3)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。

注:当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。

但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。

当static用来修饰全局变量的时候,它就改变了全局变量的作用域(在声明他的文件之外是不可见的),但是没有改变它的存放位置,还是在静态存储区中。

3. 静态函数在函数的返回类型前加上关键字static,函数就被定义成为静态函数。

函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。

例如:文件分别编译通过,但是连接的时候找不到函数staticdis()的定义,产生错误。

定义静态函数的好处:其他文件中可以定义相同名字的函数,不会发生冲突静态函数不能被其他文件所用。

存储说明符auto,register,extern,static,对应两种存储期:自动存储期和静态存储期。

auto和register对应自动存储期。

具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。

关键字extern和static用来说明具有静态存储期的变量和函数。

用static声明的局部变量具有静态存储持续期(static storage duration),或静态范围(static extent)。

虽然他的值在函数调用之间保持有效,但是其名字的可视性仍限制在其局部域内。

静态局部对象在程序执行到该对象的声明处时被首次初始化。

由于static变量的以上特性,可实现一些特定功能。

1. 统计次数功能声明函数的一个局部变量,并设为static类型,作为一个计数器,这样函数每次被调用的时候就可以进行计数。

这是统计函数被调用次数的最好的办法,因为这个变量是和函数息息相关的,而函数可能在多个不同的地方被调用,所以从调用者的角度来统计比较困难。

代码如下:输出结果为:I have been called 1 times.I have been called 2 times.I have been called 3 times.C++ 静态存储区栈堆的区别很多人都觉得学习C++是特别困难的事情。

C++学习是比较复杂的:它的内存分配、指针、以及面向对象思想的实现等等,确实需要一定的技术积累。

我们将以专题的形式,为大家逐一剖析c++的技术重点和难点。

本专题讨论的就是内存分配。

学习c++如果不了解内存分配是一件非常可悲的事情。

而且,可以这样讲,一个C ++程序员无法掌握内存、无法了解内存,是不能够成为一个合格的C++程序员的。

一、内存基本构成可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。

他们的功能不同,对他们使用方式也就不同。

静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。

它主要存放静态数据、全局数据和常量。

栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。

栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

堆区:亦称动态内存分配。

程序在运行的时候用malloc 或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。

动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在最后才释放掉动态内存。

但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。

二、三者之间的区别我们通过代码段来看看对这样的三部分内存需要怎样的操作和不同,以及应该注意怎样的地方。

例一:静态存储区与栈区篇二:C++面试相关知识点整理Static作用~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.在函数体内,static修饰的变量的值在函数调用过程中维持不变;2.在模块内(函数体外),static修饰的变量(本地全局变量)作用域只在本模块内;3.在模块内,static修饰的函数,作用域只在本模块内部。

C++中static~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.成员变量:静态成员变量(数据成员)--所有对象共享一份数据2.静态变量初始化须在类外。

int A::i=0;3.成员函数:静态成员函数。

A::fn();4.静态成员函数不能访问非静态成员变量。

(先有类才有对象)5.静态内容是属于类的,非静态内容是属于对象的。

++中static修饰的成员变量是以全局变量的形式存在,不占类的内存。

7.一个空类占一个字节,以保证创建的对象占用不同的内存(对象唯一的)。

Const作用~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Const意味着“只读”。

类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令2.可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。

3.编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

4.可以节省空间,避免不必要的内存分配。

Class VS struct~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~1.默认的继承访问权限:struct是public的,class 是private的。

取决于子类。

作为数据结构的实现体,默认的数据访问控制是public的;class作为对象的实现体,默认的成员变量访问控制是private的。

3.“class”这个关键字还作用于定义模板参数,就像“typename”,但关键字“struct”不用于定义模板参数。

C VS C++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++引入了bool类型,封装了字符串string类;2.引用:C++用引用代替传指针;3.形参默认值:C++中函数形参可初始化默认值;4.操作符重载:C++中可对操作符重载,operatorxxx5.结构体:C++中更多用类&oo:C是面向过程,C++是面向对象面向过程vs 面向对象~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.复用:在函数层复用 vs 在类层次复用2.设计思路:分析问题的步骤 vs 以功能划分问题3.组成:由若干函数组成 vs 若干类组成4.扩展维护性:不高 vs 高5.面向对象特点:封装、继承、多态、抽象C++的内存格局~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:1.栈区(stack):编译器自动分配释放,存放函数的形参,局部变量的值等2.堆区(heap):手动分配释放,若不释放,程序结束时可能由OS回收3.数据区(静态全局区)(data):全局变量、静态变量4.文字常量区:常量字符串5.程序代码区:存放代码指针VS引用~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.指针可以重新赋值,引用是终身制、不能重新赋值。

2.引用必须被初始化,指针不需要。

3.引用不能为NULL,指针可以。

4.引用只是别名,不是拷贝,也不是地址,指针代表的变量的地址。

类VS对象~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.对象:同时具有属性(静态特征)和行为(动态特征)2.类:用来创建同一类对象的模板3.类是对象的模板、对象是类的实例C++中的空类,默认产生哪些类成员函数~~~~~~~~~~~~~~~~~~~~~1.无参构造函数2.析构函数3.拷贝构造函数4.赋值运算符(operator=)5.取址运算符(operator&)(一个非const的和一个const的)构造函数~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.作用:创建对象2.特点:名字与类名相同、没有返回类型3.当没有定义构造函数时,系统自动给一个默认无参的构造函数4.只要类中定义了一个构造函数,系统就不再提供默认构造函数析构函数:对象生命周期结束时回收所占用的内存空间~~~~~~~~~~~~1.不带返回类型、不带参数、一个类中只能有一个2.一般可以在构造函数中初始化、分配堆空间(new)、在析构函数中释放(delete)拷贝构造函数~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.默认拷贝构造函数在有指针成员指向动态内存时会有问题,两个指针指向同一地方,导致混乱。

相关文档
最新文档