网站响应是什么青柠影院免费观看电视剧高清8
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:24
当前位置: 首页 > news >正文
网站响应是什么,青柠影院免费观看电视剧高清8,安阳网站设计哪家专业,一键搭建网站windows1.C特点 1. C在C语言基础上引入了面对对象的机制#xff0c;同时也兼容C语言。 2. C有三大特性#xff08;1#xff09;封装。#xff08;2#xff09;继承。#xff08;3#xff09;多态#xff1b; 3. C语言编写出的程序结构清晰、易于扩充#xff0c;程序可读性好。…1.C特点 1. C在C语言基础上引入了面对对象的机制同时也兼容C语言。 2. C有三大特性1封装。2继承。3多态 3. C语言编写出的程序结构清晰、易于扩充程序可读性好。 4. C生成的代码质量高效率高 5. C更加安全增加了const常量、引用、四类cast转换static_cast、dynamic_cast、const_cast、reinterpret_cast、智能指针、try—catch等等 6. C可复用性高C引入了模板的概念标准模板库STL。 2.C语言和C的区别 1. C语言是C的子集C可以很好兼容C语言。但是C又有很多新特性如引用、智能指针、auto变量等。 2. C是 面对对象 的编程语言 C语言是 面对过程 的编程语言。 3. C语言有一些不安全的语言特性如指针使用的潜在危险、强制转换的不确定性、内存泄露等。而C对此增加了不少新特性来改善安全性如const常量、引用、cast转换、智能指针、try—catch等等 4. C可复用性高C引入了模板的概念后面在此基础上实现了方便开发的标准模板库STL。C的STL库相对于C语言的函数库更灵活、更通用。 3.C中 struct 和 class 的区别 1. struct 一般用于描述一个数据结构集合而 class 是对一个对象数据的封装 2. struct 中默认的访问控制权限是 public 的 class 中默认的访问控制权限是 private 的。 3. 在继承关系中struct 默认是公有继承而 class 是私有继承 4. class 关键字可以用于定义模板参数就像 typename而 struct 不能用于定义模板参数 4.include头文件的顺序以及双引号和尖括号的区别 区别 尖括号的头文件是系统文件双引号的头文件是自定义文件。编译器预处理阶段查找头文件的路径不一样。 查找路径 使用尖括号时编译器会按照以下顺序查找头文件编译器设置的头文件路径 – 系统变量使用双引号时查找路径的顺序如下当前头文件目录 – 编译器设置的头文件路径 – 系统变量 5.C结构体和C结构体的区别 特性CC成员函数不可以可以静态成员不可以可以访问权限默认 public不能修改public/private/protected继承关系不可以继承可从类或其他结构体继承初始化不能直接初始化数据成员可以直接初始化数据成员也可使用构造函数 6.导入C函数的关键字C编译时和C有何不同 关键字在C中导入C函数的关键字是extern “C”主要作用就是为了能够正确实现C代码调用其他C语言代码。加上extern C后会指示编译器这部分代码按C语言进行编译。 编译区别由于C支持函数重载因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中而不仅仅是函数名而C语言并不支持函数重载因此编译C语言代码的函数时不会带上函数的参数类型一般只包括函数名。 7.C从代码到可执行二进制文件的过程 预处理 头文件展开去注释条件编译宏替换形成 .i文件(还是C语言)目的通过处理这些预编译指令生成一个没有宏定义、条件编译指令和注释的中间文件为后续的编译阶段做准备。编译 将C语言翻译为汇编语言形成 .s 文件(此时是汇编代码)目的将预编译后的源代码转换为汇编代码这个过程涉及到对源代码的语法、语义分析和优化最终生成机器相关的汇编代码。汇编 将汇编代码变成可重定位二进制文件形成.o文件链接 .o文件 系统库 形成可执行程序目的将多个目标文件和库文件链接在一起生成一个完整的可执行文件或库文件。 链接分为静态链接和动态链接。静态链接在链接阶段将程序所需要的库函数的代码直接复制到可执行文件中。当编译器生成目标文件后链接器会把程序所依赖的静态库中的代码提取出来与目标文件合并成一个完整的可执行文件。 优点可执行文件独立运行不依赖其他文件部署方便。 缺点可执行文件较大因为包含了所有用到的库代码如果库有更新需要重新编译整个程序。 生成的静态链接库Windows下以.lib为后缀Linux下以.a为后缀。动态链接在程序运行时才去加载所需要的库函数。在链接阶段链接器不会把库函数的代码复制到可执行文件中而是在可执行文件中记录对库函数的引用信息。当程序运行时操作系统的动态链接器会根据这些引用信息去查找并加载相应的动态库。 优点可执行文件较小多个程序可以共享同一个动态链接库节省内存库更新时只需更新库文件无需重新编译所有程序。 缺点运行时需要依赖动态链接库如果库文件不存在或版本不匹配可能导致程序无法运行。 生成的动态链接库Windows下以.dll为后缀Linux下以.so为后缀。 8.static关键字的作用 修饰局部变量 当static修饰局部变量时该变量的存储方式发生改变。通常局部变量存储在栈区函数调用结束后栈上的局部变量就会被销毁。但是被static修饰的局部变量存储在静态存储区它的生命周期贯穿整个程序的运行期。 修饰全局变量和函数 当static修饰全局变量时这个全局变量的作用域被限制在定义它的源文件内其他源文件不能访问这个变量。这有助于实现信息隐藏避免不同源文件之间的命名冲突。 修饰类的成员变量和成员函数 修饰成员变量 当static修饰类的成员变量时该成员变量被所有类的对象所共享。它不属于某个特定的对象而是属于类本身。修饰成员函数 被static修饰的类成员函数可以通过类名直接调用而不需要创建类的对象。并且在静态成员函数中只能访问类的静态成员变量和其他静态成员函数不能访问非静态成员变量和非静态成员函数。 原因当调用一个对象的非静态成员函数时系统会把该对象的起始地址赋给成员函数的this指针。而静态成员函数不属于任何一个对象因此C规定静态成员函数没有this指针。既然它没有指向某一对象也就无法对一个对象中的非静态成员进行访问。 9.静态变量何时初始化 C语言的全局和静态变量初始化发生在任何代码执行之前属于编译期初始化。C标准规定全局或静态对象当且仅当对象首次用到时才进行构造。 “按需初始化”好处 提高效率只有在实际需要使用对象时才进行构造避免了不必要的初始化操作特别是对于那些在程序中可能不会被使用的对象。减少依赖延迟初始化可以减少对象之间的依赖关系降低了对象之间的紧密耦合只需要在使用时获取其值。支持动态初始化对于一些需要在运行时确定初始化值的情况延迟初始化提供了更好的支持。 10.静态全局/局部变量全局/局部变量特点及使用场景 作用域 全局变量具有全局作用域可以在程序的任何地方访问。通过 extern 关键字可以在其他非定义的源文件中使用。当需要在多个函数之间共享数据或者需要在程序的不同部分访问同一个变量时可以使用全局变量。静态全局变量具有全局作用域但加上文件作用域的限制使其只能在定义它的文件中使用。当需要在一个文件内共享数据但不希望其他文件访问该变量时可以使用静态全局变量。局部变量具有局部作用域通常是在函数内部或代码块内定义只能在该范围内访问。局部变量在函数执行完毕后会被销毁。当需要在函数内部临时存储数据并且该数据只在函数内部使用时可以使用局部变量。静态局部变量具有局部作用域但它在函数调用之间保持其值只初始化一次。当需要在函数内部保存一个值并且该值在函数的多次调用之间需要保持不变时可以使用静态局部变量。 所在空间 局部变量通常存储在栈上随着函数的调用和返回而分配和释放内存。其他变量全局变量、静态全局变量、静态局部变量存储在静态存储区它们在程序的整个运行期间都存在。 11.数组和指针 数组数组是用于储存多个相同类型数据的集合。 数组名是首元素的地址。 指针指针相当于一个变量它存放的是其它变量在内存中的地址。 指针名指向了内存的首地址。 区别 赋值同类型指针变量可以相互赋值数组只能一个一个元素的赋值或拷贝存储方式 数组数组在内存中是连续存放的在静态区全局数组或栈上局部数组。指针指针很灵活它可以指向任意类型的数据。指针的类型说明了它所指向地址空间的内存。sizeof求法 数组所占存储空间的内存大小sizeof数组名/sizeof数据类型 在32位平台下无论指针的类型是什么sizeof指针名都是4 在64位平台下无论指针的类型是什么sizeof指针名都是8。 11.函数指针及使用场景 函数指针就是指向函数的指针变量。每一个函数都有一个入口地址该入口地址就是函数指针所指向的地址。 定义 返回类型 (*指针变量名)(参数列表) 函数名; 使用场景 回调函数函数指针变量可以作为某个函数的参数来使用的回调函数就是一个通过函数指针调用的函数。 12.nullptr可以调用成员函数吗 从对象和成员函数的关系来理解 成员函数实际上是通过一个隐式的this指针来访问对象的成员。当通过对象或者对象指针调用成员函数时编译器会将对象的地址作为this指针传递给成员函数。 当指针是nullptr时就没有一个有效的对象来提供这个this指针所需要的有效地址。通过nullptr调用成员函数会导致程序出现未定义行为。 特殊情况成员函数是static的它不依赖于对象实例没有this指针那么可以通过类名或者nullptr从语法上来调用。 13.野指针 概念野指针就是指针指向的位置是不可知的随机的、不正确的、没有明确限制的产生原因释放内存后指针不及时置空野指针依然指向了该内存那么可能出现非法访问的错误。这些我们都要注意避免。 避免办法 1初始化置NULL 2申请内存后判空 3指针释放后置NULL 4使用智能指针 14.C的传值方式 值传递 值传递是指在函数调用时将实际参数的值拷贝一份传递给函数的形式参数。在函数内部对形式参数的修改不会影响到实际参数的值。 引用传递 引用传递是指在函数调用时将实际参数的引用传递给函数的形式参数。在函数内部对形式参数的修改会直接影响到实际参数的值。 指针传递 指针传递是指在函数调用时将实际参数的地址传递给函数的形式参数。在函数内部可以通过解引用指针来访问和修改实际参数的值。 值传递用于对象时整个对象会拷贝一个副本这样效率低而引用传递用于对象时不发生拷贝行为只是绑定对象更高效指针传递同理但不如引用传递安全。 15.new/delete和malloc/free new/delete是C关键字需要编译器支持。malloc/free是库函数需要头文件支持。new自动计算要分配的空间大小malloc则需程序员指定。malloc和free返回的是void*指针必须进行类型转换new和delete返回的是具体类型指针。new内存分配失败时会抛出bad_alloc异常。malloc分配内存失败时返回NULL。new会先调用operator new函数申请足够的内存通常底层使用malloc实现。然后调用类型的构造函数初始化成员变量最后返回自定义类型指针。delete先调用析构函数然后调用operator delete函数释放内存通常底层使用free实现。malloc仅仅分配内存空间free仅仅回收空间不具备调用构造函数和析构函数功能用malloc分配空间存储类的对象存在风险new和delete除了分配回收功能外还会调用构造函数和析构函数。 16.const和define define生效于预处理阶段 const生效于编译的阶段。define 只是简单的文本替换不会对类型安全进行检査 const 会进行类型检查。define定义的常量运行时是直接的操作数并不会存放在内存中 const定义的常量在C语言中是存储在内存中、需要额外的内存空间的。 17.const int *a, int const *a, const int a, int *const a, const int *const a分别是什么 const int a; //指的是a是一个常量不允许修改。 const int *a; //指向常量的指针意味着通过这个指针不能修改其所指向内存中的值但指针本身可以重新指向其他同类型const int 类型的内存地址。 int const *a; //同const int *a; int *const a; //通过a指针可以修改它所指向内存中的值但a指针不能指向其他的内存地址 const int *const a; //都不变即*a不变a也不变 18.指针与引用 指针指针是一个变量其值为另一个变量的地址。 引用引用是一个别名它在定义时必须被初始化并且之后不能再绑定到其他对象。 指针可以有多级引用只有一级 当把指针作为参数进行传递时也是将实参的一个拷贝传递给形参两者指向的地址相同但不是同一个变量在函数中改变这个变量的指向不影响实参而引用却可以。
- 上一篇: 网站响应式和非响应式邢台做wap网站找谁
- 下一篇: 网站项目的设计制作wordpress大主题公园
相关文章
-
网站响应式和非响应式邢台做wap网站找谁
网站响应式和非响应式邢台做wap网站找谁
- 技术栈
- 2026年03月21日
-
网站响应式和非响应式教人做美食视频网站
网站响应式和非响应式教人做美食视频网站
- 技术栈
- 2026年03月21日
-
网站详情页链接怎么做孝感市网站建设公司
网站详情页链接怎么做孝感市网站建设公司
- 技术栈
- 2026年03月21日
-
网站项目的设计制作wordpress大主题公园
网站项目的设计制作wordpress大主题公园
- 技术栈
- 2026年03月21日
-
网站项目功能需求清单wp
网站项目功能需求清单wp
- 技术栈
- 2026年03月21日
-
网站项目建设措施wordpress支付宝应用网关设置
网站项目建设措施wordpress支付宝应用网关设置
- 技术栈
- 2026年03月21日



