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

网站系统改教程嘉定网站开发

网站系统改教程,嘉定网站开发,凡科做的网站怎么改壁纸,杭州app建设欢迎来到干货小仓库#xff01;#xff01; 一分耕耘一分收获#xff0c;离自己的目标越来越近。 passion#xff01;passion#xff01;#xff01;passion#xff01;#xff01;#xff01; 1.命名空间 由于C语言无法避免名字或者函数重复等问题#xff0c;当有多… 欢迎来到干货小仓库 一分耕耘一分收获离自己的目标越来越近。 passionpassionpassion 1.命名空间 由于C语言无法避免名字或者函数重复等问题当有多个工程时会导致很多冲突。故祖师爷C之父本贾尼·斯特劳斯特卢普,设定了命名空间与外部变量或者函数冲突都可以避免。 因此就有了命名空间。 1.1命名空间 定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{} 中即为命名空间的成员。 ①命名空间中可以定义变量/函数/类型。 ②命名空间可以嵌套。 ③ 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。 (注意一个工程中的test.h和上面test.cpp中两个N1会被合并成一个) namespace bit {// 命名空间中可以定义变量/函数/类型int a 0;int b 1;int Add(int left, int right){return left right;}struct Node{struct Node* next;int val;}; } 注意一个命名空间就定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中。 1.2命名空间使用 不能直接使用命名空间中的内容。例如 namespace N {// 命名空间中可以定义变量/函数/类型int a 0;int b 1;int Add(int left, int right){return left right;}struct Node{struct Node* next;int val;}; } int main() {// 编译报错error C2065: “a”: 未声明的标识符printf(%d\n, a);return 0; } 命名空间的使用有三种方式 以下的命名空间N沿用上面的。 ① 加命名空间名称作用域限定符(::) int main() {printf(%d\n, N::a);return 0;     } ②使用using将命名空间中某个成员引入(相当于将某个变量变成全局的) using N::b;//只是将命名空间N中的b展开 int main() {printf(%d\n, b);return 0;     } ③使用using namespace 命名空间名称引入(相当于将命名空间中的所有内容变成全局的) using namespce N; int main() {//访问命名空间中的内容就不需要访问限定符和展开了printf(%d\n, a);printf(%d\n, b);Add(10, 20);return 0;     } 2.C输入输出 先记住需要包头文件和命名空间的使用。 #includeiostream // std是C标准库的命名空间名C将标准库的定义实现都放到这个命名空间中 using namespace std; int main() {coutHello world!!!endl;return 0; } 说明 1. 使用 cout 标准输出对象 ( 控制台 ) 和 cin 标准输入对象 ( 键盘 ) 时必须 包含 iostream 头文件 以及按命名空间使用方法使用 std 。 2. cout 和 cin 是全局的流对象 endl 是特殊的 C 符号表示换行输出他们都包含在包含 iostream 头文件中。 3. 是流插入运算符 是流提取运算符 。 4. 使用 C 输入输出更方便不需要像 printf/scanf 输入输出时那样需要手动控制格式。 C 的输入输出可以自动识别变量类型。 5. 实际上 cout 和 cin 分别是 ostream 和 istream 类型的对象 和 也涉及运算符重载等知识 到了类和对象会有详细学习。 std 命名空间的使用惯例 std 是 C 标准库的命名空间如何展开 std 使用更合理呢 1. 在日常练习中建议直接 using namespace std 即可这样就很方便。 2. using namespace std 展开标准库就全部暴露出来了如果我们定义跟库重名的类型 / 对 象 / 函数就存在冲突问题。该问题在日常练习中很少出现但是项目开发中代码较多、规模 大就很容易出现。所以建议在项目开发中使用像 std::cout这样使用时指定命名空间 using std::cout展开常用的库对象/类型等方式。 3.缺省参数 3.1缺省参数的概念 缺省参数是 声明或定义函数时 为函数的 参数指定一个缺省值 。在调用该函数时如果没有指定实参则采用该形参的缺省值否则使用指定的实参。 #includeiostream using namespace std;void Func(int a 0) //缺省参数 {cout a endl; } int main() {Func(); // 没有传参时使用参数的默认值Func(10); // 传参时使用指定的实参return 0; } 3.2缺省参数的分类 ①全缺省 void Date(int year2025,int month1,int day20) {coutyear year endl;coutmonth month endl;coutday day endl; }②半缺省 void Date(int year,int month1,int day20) {coutyear year endl;coutmonth month endl;coutday day endl; } 注意: 1. 半缺省参数必须从右往左依次来给出不能间隔着给 2. 缺省参数不能在函数声明和定义中同时出现 (在.h中出现即可) 3. 缺省值必须是常量或者全局变量 4. C语言不支持编译器不支持 4.函数重载 4.1函数重载概念 函数重载是函数的一种特殊情况C允许在同一作用域中声明几个功能类似的同名函数这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同常用来处理实现功能类似数据类型 不同的问题。 构成函数重载的要求 ①参数类型不同 ②参数个数不同 ③类型顺序不同 注意 ①返回值没有要求。 ②全缺省 4.2C支持函数重载的原理--名字修饰 为什么C语言不支持CPP支持重载CPP怎么支持的呢 ①编译链接过程 ②函数名修饰规则 5.引用 5.1引用的概念 引用 不是新定义一个变量而 是给已存在变量取了一个别名 编译器不会为引用变量开辟内存空 间它和它引用的变量 共用同一块内存空间。 类型 引用变量名(对象名) 引用实体 5.2引用特性 1. 引用在定义时必须初始化。 2. 一个变量可以有多个引用。 3. 引用一旦引用一个实体再不能引用其他实体。 5.3常引用 ①引用过程中权限可以平移。 ②引用过程中权限可以缩小。 ③引用过程中权限不可以放大。 5.4使用场景 ①做参数 void Swap(int left, int right) {int temp left;left right;right temp; } ②做返回值 int Count() {static int n 0;n;// ...return n; } 注意下面代码输出什么结果为什么 int Add(int a, int b) {int c a b;return c; } int main() {int ret Add(1, 2);Add(3, 4);cout Add(1, 2) is : ret endl;return 0; } 注意如果函数返回时出了函数作用域如果返回对象还在(还没还给系统)则可以使用 引用返回如果已经还给系统了则必须使用传值返回。 引用与指针的不同 1. 引用概念上定义一个变量的别名指针存储一个变量地址。 2. 引用 在定义时 必须初始化 指针没有要求 3. 引用 在初始化时引用一个实体后就 不能再引用其他实体 而指针可以在任何时候指向任何一个同类型实体 4. 没有 NULL 引用 但有 NULL 指针 5. 在 sizeof 中含义不同 引用 结果为 引用类型的大小 但 指针 始终是 地址空间所占字节个数 (32 位平台下占4 个字节 ) 6. 引用自加即引用的实体增加 1 指针自加即指针向后偏移一个类型的大小 7. 有多级指针但是没有多级引用 8. 访问实体方式不同 指针需要显式解引用引用编译器自己处理 9. 引用比指针使用起来相对更安全 6.内联函数 6.1概念 以inline修饰的函数叫做内联函数编译时C编译器会在调用内联函数的地方展开没有函数调用建立栈帧的开销内联函数提升程序运行的效率。 如果在上述函数前增加inline关键字将其改成内联函数在编译期间编译器会用函数体替换函数的 调用。 6.2特性 1. inline 是一种 以空间换时间 的做法如果编译器将函数当成内联函数处理在 编译阶段会 用函数体替换函数调用 缺陷可能会使目标文件变大优势少了调用开销提高程序运 行效率。 2. inline 对于编译器而言只是一个建议不同编译器关于 inline 实现机制可能不同 一般建 议将 函数规模较小 ( 即函数不是很长具体没有准确的说法取决于编译器内部实现 ) 、 不 是递归、且频繁调用 的函数采用 inline 修饰否则编译器会忽略 inline 特性。 3. inline 不建议声明和定义分离分离会导致链接错误。因为 inline 被展开就没有函数地址 了链接就会找不到。 // F.h #include iostream using namespace std; inline void f(int i);// F.cpp #include F.h void f(int i) {cout i endl; }// main.cpp #include F.h int main() {f(10);return 0; }链接错误main.obj : error LNK2019: 无法解析的外部符号 void __cdecl f(int) (?fYAXHZ)该符号在函数 _main 中被引用 7.auto关键字(C11) C11 中标准委员会赋予了 auto 全新的含义即 auto 不再是一个存储类型指示符而是作为一 个新的类型指示符来指示编译器 auto 声明的变量必须由编译器在编译时期推导而得 。 int TestAuto() {return 10; } int main() {int a 10;auto b a;auto c a;auto d TestAuto();cout typeid(b).name() endl;//类型打印cout typeid(c).name() endl;cout typeid(d).name() endl;//auto e; 无法通过编译使用auto定义变量时必须对其进行初始化return 0; } 7.1auto使用规则 1. auto与指针和引用结合起来使用 用 auto 声明指针类型时用 auto 和 auto* 没有任何区别但用 auto 声明引用类型时则必须 加 2. 在同一行定义多个变量 当在同一行声明多个变量时这些变量必须是相同的类型否则编译器将会报错因为编译 器实际只对第一个类型进行推导然后用推导出来的类型定义其他变量 。 int main() {auto a 1, b 2; auto c 3, d 4.0;  // 该行代码会编译失败因为c和d的初始化表达式类型不同return 0; } 7.2auto不能推导的场景 1. auto不能作为函数的参数 // 此处代码编译失败auto不能作为形参类型因为编译器无法对a的实际类型进行推导 void TestAuto(auto a) {} 2. auto不能直接用来声明数组 int main() {int a[] { 1,2,3 };auto b[] { 456 };return 0; } 3. 为了避免与C98中的auto发生混淆C11只保留了auto作为类型指示符的用法 4. auto在实际中最常见的优势用法就是跟以后会讲到的C11提供的新式for循环还有 lambda表达式等进行配合使用。 8.基于范围的for循环(C11) 8.1范围for语法 int main() {int arr[] { 1,2,3,4,5,6,7,8,9,10 };int n sizeof(arr) / sizeof(int);//C语言打印数组for (int i 0; i n; i){printf(%d , arr[i]);}printf(\n);//CPP范围forfor (auto e : arr){printf(%d , e);}return 0; } 8.2范围for的使用条件 1. for循环迭代的范围必须是确定的 对于数组而言就是数组中第一个元素和最后一个元素的范围对于类而言应该提供 begin和end的方法begin和end就是for循环迭代的范围。 注意以下代码就有问题因为for的范围不确定 void TestFor(int array[]) {for(auto e : array)cout e endl; } 2. 迭代的对象要实现和的操作。(关于迭代器这个问题后面会出文章在细讲) 9.指针空值--nullptr(C11) 程序本意是想通过 f(NULL) 调用指针版本的 f(int*) 函数但是由于 NULL 被定义成 0 因此与程序的初衷相悖。 在 C98 中字面常量 0 既可以是一个整形数字也可以是无类型的指针 (void*) 常量但是编译器默认情况下将其看成是一个整形常量如果要将其按照指针方式来使用必须对其进行强转(void *)0。 注意 1. 在使用 nullptr 表示指针空值时不需要包含头文件因为 nullptr 是 C11 作为新关键字引入 的 。 2. 在 C11 中 sizeof(nullptr) 与 sizeof((void*)0) 所占的字节数相同。 3. 为了提高代码的健壮性在后续表示指针空值时建议最好使用 nullptr 。 觉得不错别忘记点赞收藏咯欢迎大家的询问和指教谢谢大家
http://www.ho-use.cn/article/10821371.html

相关文章:

  • 一站式服务平台登录武威做网站
  • 四川交投建设招标网站廊坊seo排名收费
  • 网站建设 今晟网络为什么wordpress模板
  • 城北区工程建设信息网站宜春企业网站的建设
  • 商城网站建设注意什么网站的外链
  • wordpress divi桂林seo公司
  • 福建省建设网站wordpress首页图标
  • 泰州网站制作软件国外好用的免费服务器
  • 深圳高端网站设计推广普通话海报
  • 河北建设网官方网站wordpress文章固定字段
  • 织梦网站上传新闻外包公司怎么赚钱
  • 做网站公司法人还要拍照吗dw怎样做网站切换
  • 洛阳建设工程网站北京医疗网站建设
  • 帮人做任务的网站盐都城乡建设部网站首页
  • 湛江住房和城乡建设部网站辽宁建设厅勘察设计网站
  • 手机网站开发方案室内设计相关网站
  • 甲马营seo网站优化的兴隆大院网站哪个公司做的
  • 西安大型网站开发网站建设与管理期末考试
  • 免费舆情网站直接打开抽奖网站怎么做的
  • 网站制作一薇深圳网站订制开发
  • nas搭建网站重庆机械加工网
  • 旅游景点企业网站排名东莞是哪个省
  • 苏州知名网站建设开发网站建设如何设定关键字
  • 生物科技网站模板wordpress评论积分
  • 深圳住房和建设局网站公开招标asp php jsp网站开发
  • 网站建设cz35wordpress 禁止页面评论
  • 写wordpressseo定义
  • 网站管理方案个人网站怎么备案
  • 辽宁省建设工程注册中心网站没备案的网站怎么做淘客
  • 网站开发公司飞沐做网站赚钱吗