商城网站 个人备案企业做网站系统

张小明 2025/12/24 5:50:56
商城网站 个人备案,企业做网站系统,室内设计师工资一般多少,wordpress如何做首页前言#xff1a;C 是一门高效、灵活且功能强大的通用编程语言#xff0c;由 Bjarne Stroustrup 于 1979 年在贝尔实验室开发。它通常被视为 C 语言的延伸#xff0c;在 C 语言的基础上增加了面向对象编程#xff08;OOP#xff09;和泛型编程的支持#xff0c;同时C 是一…前言C 是一门高效、灵活且功能强大的通用编程语言由 Bjarne Stroustrup 于 1979 年在贝尔实验室开发。它通常被视为 C 语言的延伸在 C 语言的基础上增加了面向对象编程OOP和泛型编程的支持同时C 是一门 “难学但上限极高”的语言如果追求极致的程序运行效率或者需要深入理解计算机底层运作原理C 是必修课。一、C与C程序C语言输出Hello World:include stdio.h int main() { printf(Hello World\n); return 0; }C输出Hello World:#includeiostream using namespace std; int main() { coutHello Worldendl; return 0; }我们发现C语言和C虽然同宗同源但即使是输出简单的 Hello World其背后的设计理念也有很大不同。①C语言偏向“面向过程”注重直接的函数调用②C偏向“面向对象”引入了流Stream和命名空间的概念。所以想吃透 C 的第一个程序我们需要先掌握必要的前置知识。二、命名空间对于初学C的帅观众肯定会疑惑这句代码是什么意思在C语言中从来没有看见过。using namespace std;其实命名空间Namespace 是 C 为了解决 C 语言中“命名冲突”这一痛点而引入的关键特性。因为在C/C中变量、函数和后⾯要学到的类都是⼤量存在的这些变量、函数和类的名称将都存在于全局作⽤域中可能会导致很多冲突。而使⽤命名空间的⽬的是对标识符的名称进⾏本地化以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的。2.1 为什么会出现命名冲突例如在头文件stdlib.h中包含一个名为rand的函数其原型如下rand函数原型int rand (void);函数名rand返回值int参数void不需要传参。功能返回一个伪随机整数#include stdio.h #include stdlib.h int rand 10; int main() { // 编译报错error C2365: “rand”: 重定义以前的定义是“函数” printf(%d\n, rand); return 0; }编译报错原因在不知道该函数的前提下当你编写一个程序时定义了一个名字也为 “rand” 的变量此时命名冲突就发生了编译器会认为rand进行了重定义。因为之前rand是一个函数而现在变成了一个整形变量这样就导致了因为命名冲突而出现报错。C祖师爷就针对这样的问题引出了命名空间2.2 namespace的简单定义定义命名空间需要使⽤到namespace关键字后⾯跟命名空间的名字然后接⼀对 { } 即可 { } 中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。代码示例在命名空间mount中定义变量、函数、自定义类型。//namespace --关键字 mount为改命名空间的名字 namespace mount { //命名空间中可以定义变量 int rand 10; //可以定义函数 int Add(int left, int right) { return left right; } //可以定义结构体变量 struct Node { struct Node* next; int val; }; }2.3 命名空间解决命名冲突回顾冲突的原因 同一个域里不能有两个东西都叫rand。在没有命名空间之前整个代码就像在一个大广场全局域/Global Scope上。当你包含了头文件stdlib.h或cstdlib时标准库就把一个叫rand的函数放到了这个大广场上。如果你接着在广场上又定义了一个变量叫rand#include stdlib.h // 引入了系统自带的 rand 函数 int rand 10; // 报错冲突了 int main() { // 编译器困惑你这里的 rand 到底是指那个函数还是这个整数 // Error: rand redeclared as different kind of symbol }命名空间解决编译查找⼀个变量的声明/定义时默认只会在局部或者全局查找不会到命名空间⾥⾯去查找。命名空间Namespace 的本质就是在广场上盖了一个私有的房间或者说围了一个院子。当你定义namespace mount时你创造了一个独立的空间。#include stdio.h #include stdlib.h // 系统 rand 函数 依然在“广场”上 // 我们建了一个叫 mount 的房间把我们自己定义的 rand 变量关在里面 namespace mount { int rand 10; } int main() { // 此时完全没有冲突 // 1. 系统 rand 函数它在外面全局域 // 2. 我们的 rand 变量它在 mount 房间里mount 域 return 0; }2.4 访问命名空间编译查找⼀个变量的声明/定义时默认只会在局部或者全局查找不会到命名空间⾥⾯去查找所以下⾯程序会编译报错。#includestdio.h namespace mount { int a 0; int b 1; } int main() { // 编译报错error C2065: “a”: 未声明的标识符 printf(%d\n, a); return 0; }如果我们要使⽤命名空间中定义的 变量 / 函数有三种⽅式① 指定命名空间访问大型项⽬中推荐这种⽅式。② using将命名空间中某个成员展开项⽬中经常访问的不存在冲突的成员推荐这种⽅式。③ 展开命名空间中全部成员项⽬不推荐冲突⻛险很⼤⽇常⼩练习程序为了⽅便推荐使⽤。“ : : ” 为域作用限定符左边无命名空间名时默认为全局1. 当域作用限定符左边有命名空间名时在该命名空间中寻找并调用2. 当域作用限定符左边没有有命名空间名时默认在全局中寻找并调用2.4.1 指定命名空间访问代码示例#includestdio.h namespace mount { int a 10; void f() { printf(func N\n); } int add(int a,int b) { return ab; } //可以定义结构体变量 struct Node { struct Node* next; int val; }; } int c10; // 指定命名空间访问 int main() { //调用命名空间中的变量 printf(%d\n, mount::a); //调用命名空间中的无参函数 mount::f(); //调用命名空间中的有参函数 mount::add(1,2); //声明命名空间中的结构体变量 struct mount::Node n1; //调用全局域的变量 printf(%d\n,::c); return 0; }2.4.2 展开命名空间中某个成员#includestdio.h namespace mount { int a 10; void f() { printf(func N\n); } int add(int a,int b) { return ab; } //可以定义结构体变量 struct Node { struct Node* next; int val; }; } using mount::a; using mount::f(); //展开命名空间中某个成员 int main() { //展开后无需使用域限定符进行访问 printf(%d,a); f(); return 0; }2.4.3展开命名空间中全部成员#includestdio.h namespace mount { int a 10; void f() { printf(func N\n); } int add(int a,int b) { return ab; } //可以定义结构体变量 struct Node { struct Node* next; int val; }; } using namespace mount; //展开命名空间中全体成员 int main() { //展开命名空间中全体成员后 //所有成员都无需使用域空间名进行访问 printf(%d,a); f(); add(1,2); struct Node n1; return 0; }这样我们也就理解了为什么出现了 using namespace std;因为C标准库都放在⼀个叫std(standard)的命名空间中我们通过将其展开无需通过加上前缀std::就可以便捷地使用。2.5namespace的嵌套定义命名空间的嵌套就像电脑文件夹里的“子文件夹”。当项目变得非常巨大时仅仅一层命名空间可能不够用了。比如一个大型游戏引擎可能所有的代码都在Game命名空间下但里面又分“图形”、“音频”、“网络”等模块。namespace Game { // Game 下的 Graphics 模块 namespace Graphics { void render() { printf(正在渲染画面...\n); } } // Game 下的 Audio 模块 namespace Audio { void playSound() { printf(正在播放声音...\n); } } }2.6多文件下的命名空间多⽂件中可以定义同名namespace他们会默认合并到⼀起就像同⼀个namespace⼀样代码实例演示假设你在做一个电商系统所有代码都归属于Shop命名空间但你肯定不会把所有代码写在一个文件里。文件 1:Cart.h(购物车模块)// 第一次定义 Shop编译器创建一个新域 namespace Shop { void add() { /*...*/ } }文件 2:Order.h(订单模块)// 再次遇到 Shop编译器识别出已有该域于是将 Order 加入其中 namespace Shop { void pay() { /*...*/ } }文件 3:main.cpp(主程序)#include Cart.h #include Order.h int main() { // 此时在 main 函数看来add函数 和 play函数 都在同一个 Shop 命名空间里 Shop::add(); Shop::play(); return 0; }需要注意的“坑”:虽然同一个命名空间可以分布在多文件中但是同一个变量/函数不能重复定义除非是声明。错误示范命名空间合并了意味着x都在同一个屋檐下了在一个屋檐下不能有两个重名的x。FileA.cpp:namespace A { int x 10; // 定义 x }FileB.cpp:namespace A { int x 20; // 错误x 重定义了 }三、输入与输出在C程序中我们通常包含iostream头文件是 Input Output Stream输入输出流的缩写。它是 C 标准库中的核心头文件 —— 输入输出流库专门定义了cout输出、cin输入等标准输入、输出对象是实现控制台输入输出的基础。C 的输入输出不再使用函数如scanf/printf而是使用流对象配合运算符。对象/符号所属类作用备注std::cinistream标准输入主要面向窄字符char配合使用std::coutostream标准输出主要面向窄字符char配合使用std::endl(函数)换行 刷新缓冲区比单纯的\n多了一个刷新缓冲区的动作-流提取运算符 (Input)数据从流“流向”变量-流插入运算符 (Output)数据从变量“流向”屏幕3.1 C中的标准输入C的输入不再使用函数如scanf而是通过定义在std命名空间中std::cin进行输入代码示例C中的输入需要配合流插入运算符符号 “” 进行使用#includeiostream int main() { int a; std::cina; return 0 }代码示例展开命名空间std标准库使用cin#includeiostream using namespace std; int main() { int a; cina; return 0 }3.2 C中的标准输出C的输出不再使用函数如printf而是通过定义在std命名空间中std::cout进行输出代码示例C中的输出需要配合流提取符号 “” 进行使用#includeiostream int main() { int a10; std::couta; return 0 }代码示例展开命名空间std标准库使用cout#includeiostream using namespace std; int main() { int a10; cout10; return 0 }3.3 C中的换行符std::endl 本质是函数它的核心区别于单纯的换行符 \n。前者既实现换行又会刷新缓冲区而后者仅完成换行无刷新缓冲区的动作。代码示例配合流提取运算符“”使用换行符#includeiostream using namespace std; int main() { int a10; cout10endl; return 0 }3.4 C的IO优势相比于 C 语言的printf/scanfC 的方式更加“智能”①自动类型识别不需要像 C 语言那样手动指定格式控制符如%d,%c,%f。原理本质是利用了 函数重载后续会深入讲解。②支持自定义类型这是最强大的地方未来学完类和对象后你可以让cin/cout直接输出你自定义的结构体或类。3.5 C的IO注意事项命名空间所有标准库内容都在namespace std中。练习时可以直接using namespace std;图方便。项目中不建议直接展开应使用std::cout或using std::cout;以免污染命名空间。关于 C 语言混用C 代码中依然可以使用printf/scanf。头文件陷阱虽然 VS 编译器在包含iostream时可能会间接包含stdio.h让你能直接用 printf但这不符合标准。为了跨平台兼容如果用 printf最好显式包含stdio.h。既然看到这里了不妨关注点赞收藏感谢大家若有问题请指正。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

安徽城乡建设局网站wordpress调用文章字数

EmotiVoice语音合成在广告配音中的创意应用 在数字营销的战场上,一条30秒的广告音频,可能决定一场大促活动的成败。传统广告配音依赖专业播音员录音:预约档期、进棚录制、后期修音——整个流程动辄数小时甚至数天。而当市场团队需要为不同地区…

张小明 2025/12/22 10:07:21 网站建设

四川网站建设公司可信赖的手机网站设计

前言基于 SpringBoot 的在线拼车管理系统,直击拼车出行 “信息分散、匹配精准度低、行程安全无保障、费用结算繁琐” 的核心痛点,依托 SpringBoot 的高效开发与稳定运行优势,构建 “信息整合 智能匹配 全流程管控” 的一体化拼车服务平台。…

张小明 2025/12/22 10:07:21 网站建设

python做网站的书视频主持网站建设

CentOS 7安装与命令行使用指南 1. CentOS 7介绍 CentOS(Community Enterprise Operating System)是一个快速、稳定且开源的企业级Linux发行版,可用于笔记本电脑、桌面计算机和服务器。它基于Red Hat Enterprise Linux(RHEL)的源代码开发,由CentOS社区维护。CentOS软件包…

张小明 2025/12/22 10:07:20 网站建设

长春网站关键词排名网易企业邮箱怎么申请

终极轨道计算指南:3个实战技巧解析 【免费下载链接】sgp4 Simplified perturbations models 项目地址: https://gitcode.com/gh_mirrors/sg/sgp4 轨道计算是航天工程中至关重要的基础技术,它能够精确预测卫星在太空中的位置和运动轨迹。SGP4&…

张小明 2025/12/22 10:07:19 网站建设

安贞做网站公司上海元山建设有限公司网站

目录 建表 字段定义 基础配置:(必填)可选配置:[ KEY ](维度字段标记) 可选配置:[ ](聚合类型,仅聚合表用)可选配置:[ [ GENERATED ALWAYS ] AS…

张小明 2025/12/22 10:07:22 网站建设

都市网台州网站优化

第一章:R与Python并行计算协同概述在数据科学和高性能计算领域,R 与 Python 各自拥有独特优势。R 在统计建模与可视化方面表现出色,而 Python 则以其通用编程能力和丰富的机器学习生态占据主导地位。将两者结合进行并行计算,能够充…

张小明 2025/12/22 10:07:23 网站建设