当前位置: 首页 > news >正文

灌云住房和城乡建设网站个人网站页面设计素材

灌云住房和城乡建设网站,个人网站页面设计素材,做网站后租服务器一年多少钱,网站专题页面设计规范C和C的区别 1.语言类型#xff1a;C 是一种过程性编程语言#xff0c;着重于以函数为基础的结构化编程#xff1b;而 C 是一种多范式编程语言#xff0c;支持面向对象编程#xff08;OOP#xff09;和泛型编程等多种编程范式。 2.对象模型#xff1a;C 支持类和对象的概…C和C的区别 1.语言类型C 是一种过程性编程语言着重于以函数为基础的结构化编程而 C 是一种多范式编程语言支持面向对象编程OOP和泛型编程等多种编程范式。 2.对象模型C 支持类和对象的概念可以通过封装数据和成员函数来实现面向对象编程。而在 C 中没有直接支持类和对象的特性只能通过结构体和函数来模拟。 3.标准库C 在标准库方面相比 C 更加丰富。除了包括 C 标准库外C 还提供了标准模板库Standard Template LibrarySTL其中包含了许多容器、算法和迭代器等可复用的组件能够极大地简化开发过程。 4.面向对象特性C 支持封装、继承和多态等面向对象编程的特性使得代码可以更加模块化、可维护和可扩展。而在 C 中没有原生的支持这些特性需要手动进行实现。 5.异常处理C 提供了异常处理机制允许程序在出现错误时抛出异常并通过异常处理语句进行捕获和处理。而在 C 中通常使用错误码等方式来处理错误。 6.函数重载C 支持函数重载即可以定义多个同名函数但参数类型、个数或顺序不同。这样可以根据具体的情况选择合适的函数进行调用。而在 C 中函数重载是不允许的。 7.名称空间C 引入了命名空间namespace的概念可以避免命名冲突在不同的名称空间中定义相同名字的函数和变量。C 中没有命名空间的概念 指针和引用 相同点 1. 可以用于访问内存中的变量或对象。 2. 可以作为函数参数传递变量或对象的引用或地址。 3. 可以用于动态分配内存并在程序中进行内存管理。 4. 可以用于实现数据结构如链表、树等。 5. 可以作为成员变量出现在类中并用于实现类的数据成员和成员函数。 不同点 1. 内存模型不同 指针是一个变量它存储着一个内存地址而引用是一个别名它是已经存在的变量或对象的别名。因此指针本身占据内存空间而引用不占用内存空间。 2. 指针和引用的自增运算符意义不同指针是对内存地址自增而引用是对值的自增。 3. 指针需要解引用引用使用时无需解引用(*). 4. 指针可以为空引用不能为空。 5. “sizeof 指针”得到的是指针本身的大小在32 位系统指针变量占用4字节内存“sizeof 引用”得到的是所指向的变量(对象)的大小。 重载重写隐藏 #include iostream using namespace std; class A { public: void Max(int a, int b){} }; class B : public A{ public: int Max(char a){return 0;} }; int main() {A Atest;Atest.Max(1,2);B Btest;Btest.Max(a); // 正确调用Btest.Max(1,2); // 编译出错虽然基类中的函数符合它的传入参数形式但是基类中符合它类型的函数已经被隐藏了return 0; } new/deletemalloc/free的区别 1. new/delete是C的关键字操作符可以被重载 2. malloc/free是C的库函数不可以重载 3. malloc需要自己显示计算分配内存大小new则由编译器计算 int *q (int*)malloc(sizeof(int) * 2);int *p new int[2]; 4. malloc分配成功后返回的是void*指针需要强制转换new会直接返回对应的指针。 5. new/delete会调用构造析构函数malloc/free只会申请释放内存不调用构造/析构函数。 补充delete,free后需要将指针指向nullptr/NULL因为内存不会立刻回收。 inline函数 1. 内联执行的内容直接写在了调用处。 2. 不用像函数调用一样直接执行函数体。 3. 相比较于宏多了类型检查 4. 不能包含复杂操作循环递归switch等。 5. Class中的函数除了虚函数自动隐式定义为内联 优点 1. 直接在调用处代码展开省去了参数压栈回收等。 2. 代码展开时相比较于宏会做安全检查自动类型转换 3. Class内自动转换为内联可以访问成员变量 4. 可以调试宏不行 this指针 隐含于非静态成员函数。this是一个右值不可以取地址this不可以。 堆和栈的区别 1. 栈编译器管理堆用户管理 2. 空间大小不同 3. 生长方式不同 4. 堆都是动态分配栈有静态分配编译器完成比如局部变量动态分配 静态全局变量、全局变量 1. 都位于常量区 2. 静态全局变量只在本文件中有效别的文件无法使用全局变量可以在别的文件中使用。 3. 不同文件不可以定义相同名称的全局变量。 静态局部变量和局部变量 1. 静态局部变量在常量区局部变量在栈区 2. 静态局部变量作用域结束后不会销毁程序结束后才结束。 3. 静态变量初始值为0局部变量是随机值 4. 静态局部变量编译时只赋值一次以后每次调用相同函数都不再赋值。 源代码如何变成可执行文件预处理编译汇编链接 预处理删除所有的#define处理所有条件预编译指令如: #if, #ifdef, #else等。删除所有注释添加行号文件标识。.c文件 .i文件 编译编译器负责词法分析语法分析语义分析等最终生成目标机器代码, .s文件 汇编将汇编语言转换为机器可以执行的语言0,1组成形成目标文件.o 链接通过链接器将多个目标文件链接生成可执行文件连接器主要负责地址重新分配符号名称绑定重定位等。 map是否可以使用结构体作为key? map自动排序所以一般是不可以的需要对进行运算符重载。 如何定义一个只能在堆上栈上生成的类 只能在堆上方法将析构函数设置为私有。 原因C是静态绑定编译器管理栈上对象的生命周期编译器在为类分配空间时会优先检查析构函数访问性如果析构函数不可以访问则不可以在栈上创建对象。 只能在堆上方法将new和delete重载为私有。 delete this是否合法 1. 必须保证this是new出来的。 2. delete this是最后一个调用this的语句。 如何判断程序是大端小端 大端高字节在低位符合人的思维 int main() {short a 0x1023;char b static_castchar(a);if(b 0x12) // 大端else if(b 0x34) // 小端 } 内存分区模型 代码区存放函数体的二进制代码由操作系统进行管理 全局区存放全局变量静态变量以及常量 栈区由编译器自动分配释放存放函数的参数值局部变量 堆程序员分配释放 程序运行前 编译生成可执行文件后未执行该程序前分为两个区域 代码区存放CPU执行的机器指令代码区是共享的代码区是只读的。 全局区全局变量静态变量存放在此。 程序运行后 栈区由编译器自动分配释放存放函数的参数值局部变量。 extern C作用 按照C语言的方式编译比如C是不支持重载的。 C中struct和class的区别 1.权限分为成员访问权限和继承权限 默认成员权限class是私有的struct是公有的 默认继承权限class是privatestruct是public 2.class可以定义模板参数  templateclass  T,而没有templatestruct T 3.C语言中struct是用户自定义数据类型UDTC中struct是抽象数据类型ADT支持成员函数的定义C中的struct能继承能实现多态 C中struct是没有权限的设置的且struct中只能是一些变量的集合体可以封装数据却不可以隐藏数据而且成员不可以是函数。 C中struct增加了访问权限且可以和类一样有成员函数成员默认访问说明符为public为了与C兼容。 struct作为类的一种特例是用来自定义数据结构的。一个结构标记声明后在C中必须在结构标记前加上struct才能做结构类型名除typedef struct class{};;C中结构体标记结构体名可以直接作为结构体类型名使用此外结构体struct在C中被当作类的一种特例。 nullptr和NULL 在C语言中NULL是宏定义nullptr是C 11的关键字。 //C语言中NULL定义 #define NULL (void*)0 //c语言中NULL为void类型的指针但允许将NULL定义为0//c中NULL的定义 #ifndef NULL #ifdef _cpluscplus //用于判定是c类型还是c类型 #define NULL 0 //c中将NULL定义为整数0 #else #define NULL ((void*)0) //c语言中NULL为void类型的指针 #endif #endif c中int *pNULL; 实际表示将指针P的值赋为0而c中当一个指针的值为0时认为指针为空指针。 strlen和sizeof的计算 1. strlen函数只可以以char*为参数返回str的长度不包括\0。 2. sizeof计算实际字节数 const char* s1 0123456789;std::cout sizeof(s1) std::endl; // 根据编译器返回地址字节数std::cout sizeof(*s1) std::endl; // 第一个字符字节数1std::cout strlen(s1) std::endl; // s1的长度10#######################################################################const char s2[] 0123456789; // 动态数组std::cout sizeof(s2) std::endl; // 11, 计算的是整个数组大小会算上\0std::cout strlen(s2) std::endl; // 字符串长度10std::cout sizeof(*s2) std::endl; // 1计算第一个字符#######################################################################const char s3[100] 0123456789;std::cout sizeof(s3) std::endl; // 100, 实际分配的内存大小std::cout strlen(s3) std::endl; // 10, 字符串长度#######################################################################int s4[100] { 0,1,2,3,4 }; // int 4字节 400字节std::cout sizeof(s4) std::endl;#######################################################################char p[] { a, b, c, d };char q[] { a, b, \0, c, d};std::cout sizeof(p) std::endl; // 4字节std::cout strlen(p) std::endl; // ??不确定随机数std::cout sizeof(q) std::endl; // 4字节std::cout strlen(q) std::endl; // 2, 相当于统计了ab 内存对齐 struct Stu{int i;int j;char k;}Stu test;std::cout sizeof(test) std::endl; // 输出12,字节对齐后124 or 8的倍数
http://www.zqtcl.cn/news/645226/

相关文章:

  • 太仓网站建设哪家好58同城找工作
  • 一键网站制作机关网站建设建议
  • 快站公众号工具台州网站制作系统分析怎么写
  • 品牌网站制作方案如何写推广软文
  • o2o营销seo薪酬如何
  • 网站开发公司 网站空间推广网站制作
  • 鞍山网站制作小程序WordPress网盘下载插件
  • 保山市建设厅官方网站郑州建设信息网站
  • clh网站建设公司h5网站源代码
  • 做装修的网站怎么做好服装市场调网站建设的目的
  • 佛山网站建站电子工程网名又知道你是做工程
  • 桐乡网站二次开发商城购物网站建设
  • 大连微网站制作公司网页多钱
  • 郑州网站托管助企网络营销推广合作
  • 做电商网站用什么软件企业网站建设方案范本
  • o2o商城网站搭建潍坊定制网站搭建
  • 网站建设费用说明青岛网站建设方案公司
  • 佛山市建设企业网站服务机构优化seo是什么
  • 仿70网站分类目录源码市场营销策划ppt免费模板
  • 广东圆心科技网站开发网站模板设计网页程序代码
  • 网站平台定制开发一级a做爰网站下载
  • 网站如何做流媒体wordpress导出软件
  • 电商网站流程图esp8266做网站
  • 细胞医疗 网站模版免费网址软件
  • app地推网企业seo解决方案
  • php网站转移网吧手机网站模版
  • 北京建设教育网站今天的国内新闻
  • 江苏省建设银行网站天心区网站建设公司
  • 网站分享设计网站备案收费么
  • 手机网站专题关于asp sql网站开发的书籍