尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
C++基础(一) 简单认识一下C++
前言创作该博客的初衷是为了巩固和督促自己在C的学习也希望我的博客可以对您有所帮助。目录一.C的第一个程序二.命名空间2.1 namespace的价值2.2 namespace的定义2.3命名空间的使用三.C输入输出四,缺省参数五.函数重载结束语一.C的第一个程序C兼容C语言的大多数语法C中需要把定义文件代码的后缀改为.cpp,以便编译器调用C编译如果是linux下要用g编译不再是gcc。//c语言实现hello world #includestdio.h int main() { printf(hell0 world\n); return 0; }C有自己一套的输入输出#includeiostream using namespace std; int main() { couthello worldendl; return 0; }二.命名空间2.1 namespace的价值使用命名空间的目的是对标识符的名称进行本地化以避免命名冲突或名字污染namespace关键字的出现就是针对这个问题的。#includestdio.h #includestdlib.h int rand 0; int main() { //会报错提示rand重定义以前定义是函数 printf(%d\n, rand); return 0; }2.2 namespace的定义定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出一个域这个域跟全局域各自独立不同的域可以定义同名变量所以下面的rand不在冲突了。C中域有函数局部域全局域命名空间域类域域影响的是编译时语法查找一个变量/函数/类型出处(声明或定义)的逻辑所有有了域隔离名字冲突就解决了。局部域和全局域除了会影响编译查找逻辑还会影响变量的生命周期命名空间域和类域不影响变量生命周期。namespace只能定义在全局当然他还可以嵌套定义。项目工程中多文件中定义的同名namespace会认为是一个namespace不会冲突。C标准库都放在一个叫std(standard)的命名空间中。#includestdio.h #includestdlib.h namespace lzx { int rand 0; } int main() { //这样就不会报错了 printf(%d\n, lzx::rand); return 0; }在这我们还要介绍另外一个东西域访问限定符我们都知道当全局域和局部域都定义了一个变量a时编译器会优先访问局部域但是通过域访问限定符我们可以指定访问某域的某变量。#includestdio.h #includestdlib.h namespace lzx { int a 0; } int a 10; int main() { int a 20; printf(%d\n, lzx::a);//访问lzx域里的变量a printf(%d\n, ::a);//访问全局域里的变量a printf(%d\n, a);//访问局部域里的变量a return 0; }2.3命名空间的使用编译查找一个变量的声明/定义时默认只会在局部或者全局查找不会到命名空间里面去查找。所以下面程序会编译报错。所以我们要使用命名空间中定义的变量/函数有三种方式指定命名空间访问项目中推荐这种方式。using将命名空间中某个成员展开项目中经常访问的不存在冲突的成员推荐这种方式。展开命名空间中全部成员项目不推荐冲突风险很大日常小练习程序为了方便推荐使用。#includestdio.h namespace lzx { int a 0; int b 10; } using namespace lzx;//全部展开 using lzx::a;//将某个成员展开三.C输入输出iostream 是Input Output Stream的缩写是标准的输入、输出流库定义了标准的输入、输出对象。std::cin 是istream类的对象它主要面向窄字符narrow characters (of type char)的标准输入流。std::cout 是ostream类的对象它主要面向窄字符的标准输出流。std::endl 是一个函数流插入输出时相当于插入一个换行字符加刷新缓冲区。 是流插入运算符 是流提取运算符。C语言还用这两个运算符做位运算左移/右移使用C输入输出更方便不需要像printf/scanf输入输出时那样需要手动指定格式C的输入输出可以自动识别变量类型(本质是通过函数重载实现的这个以后会讲到)其实最重要的是C的流能更好的支持自定义类型对象的输入输出。IO流涉及类和对象运算符重载、继承等很多面向对象的知识这些知识我们还没有讲解所以这里我们只能简单认识一下C IO流的用法后面我们会有专门的一个章节来细节IO流库。cout/cin/endl等都属于C标准库C标准库都放在一个叫std(standard)的命名空间中所以要通过命名空间的使用方式去用他们。一般日常练习中我们可以using namespace std实际项目开发中不建议using namespace std。这里我们没有包含stdio.h也可以使用printf和scanf在包含iostream间接包含了。vs系列编译器是这样的其他编译器可能会报错。四,缺省参数缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时如果没有指定实参则采用该形参的缺省值否则使用指定的实参缺省参数分为全缺省和半缺省参数。有些地方把缺省参数也叫默认参数全缺省就是全部形参给缺省值半缺省就是部分形参给缺省值。C规定半缺省参数必须从右往左依次连续缺省不能间隔跳跃给缺省值。带缺省参数的函数调用C规定必须从左到右依次给实参不能跳跃给实参。函数声明和定义分离时缺省参数不能在函数声明和定义中同时出现规定必须函数声明给缺省值。#includeiostream using namespace std; void Func(int a) { cout a endl; } int main() { void Func(int a 20);//定义与声明分离时声明给缺省值 Func();//没有传参使用默认值 Func(10);//传参使用传参值 return 0; }#includeiostream using namespace std; //半缺省 void Func1(int a,int b10) { cout a b endl; } //全缺省 void Func1(int a20, int b 10) { cout a b endl; }五.函数重载C支持在同一作用域中出现同名函数但是要求这些同名函数的形参不同可以是参数个数不同或者类型不同。这样C函数调用就表现出了多态行为使用更灵活。C语言是不支持同一作用域中出现同名函数的。#includeiostream using namespace std; int add(int left,int right) { cout int add(int left,int right) endl; return left right; } double add(double left, double right) { cout double add(double left, double right) endl; return left right; } int main() { add(1, 2); add(1.1, 2.2); return 0; }但是注意add()与add(int a10)虽构成函数重载但是调用时有歧义编译器不知道调用谁。但是我们可以通过命名空间域来解决#includeiostream using namespace std; namespace lzx { void add() { cout int add() endl; } } int add(int left 20) { cout int add(int left 20) endl; return left; } int main() { int a add(); return 0; }结束语感谢您的浏览如若发现术语或者代码有问题欢迎在评论区指出。传送门string类(一)传送门string类(二)
RELATED

相关推荐

Confluence表格全攻略:从插入、美化到动态宏及避坑指南

Confluence表格全攻略:从插入、美化到动态宏及避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/2 8:05:20
服务器选型避坑指南:从需求分析到硬件配置与运维实战

服务器选型避坑指南:从需求分析到硬件配置与运维实战

选服务器这件事,看起来就是CPU、内存、硬盘几个参数的事,但真到自己下单或者给公司做选型时,才发现问题一点都不简单。群里几乎每天都有人问类似的问题:“为什么我买的服务器跑几个虚拟机就卡死”“为什么Windows Server总是提示远…

📅 2026/10/2 8:00:20
RDK Studio上手实战:从环境配置到AI视觉跟随项目部署

RDK Studio上手实战:从环境配置到AI视觉跟随项目部署

1. 为什么我会推荐RDK Studio来跑机器人开发地瓜机器人这名字听起来挺接地气的,但它的RDK系列开发套件在机器人圈子里已经不算陌生了。RDK Studio是地瓜官方推出的一体化开发工作台,说直白点,它是把设备管理、代码开发、可视化调试、模型部署…

📅 2026/10/2 8:00:20
MORE NEWS

更多资讯

📰

通达信日线.day文件二进制解析与SQLite入库实战

先把结论放前面:这篇文章要解决的问题,是很多做量化、做复盘、或者单纯想给自己留一份干净行情数据的朋友都会遇到的。通达信系的软件,包括申万宏源金融终端,会把日线行情以二进制文件存在本地,你可以在打开软件的情况…

📰

GEO优化服务商怎么选?从LLM到RAG的技术评估避坑指南

先给结论:GEO 服务商如果只聊关键词和发稿量,基本可以 pass。GEO 的战场不在传统 SERP,而在 LLMRAG 的召回、重排、生成三段链路。GEO 的精准技术定义:GEO(Generative Engine Optimization)是围绕生成式 AI…

📰

为什么你的Python项目越做越烂?真相扎心了

三年前我接手过一个Python项目,五千行代码挤在一个文件里,变量叫a、b、c、data1、data2。没有测试,没有文档,改一个功能崩三个地方。我骂前任是“屎山雕花”。直到半年后,我自己从零写的新项目也长成了那副鬼样子&…

📰

时薪两美元喂大顶尖算法,亚马逊运营二十一年的秘密工厂突然关停

时薪两美元喂大顶尖算法,亚马逊运营二十一年的秘密工厂突然关停 你可能很难想象,过去二十年里那些看似无所不能的顶尖科技,最初其实是由一群躲在屏幕后面、赚着几美分零钱的普通人,一单单「手工」捏出来的。 更讽刺的是&#xff0…

📰

dbx:融合CLI、Docker与AI的现代化数据库命令行工具

1. 项目概述:dbx不是“某个神秘工具”,而是数据库CLI生态里正在快速崛起的务实派最近在多个技术社区和开发者群聊里,“dbx”这个词出现频率明显升高——不是指那个老牌音频处理器品牌,也不是某家初创公司的缩写,而是指…

📰

小超市店主提问:AI真的懂零售吗

坐标某三线城市,社区超市店主,店开在小区门口第八年。标题这个问题我替各位店主问过了——答案是:它懂的不是零售,是您店里那点事。亲身经历,往下看。 我为什么怀疑 开店的都知道,零售这事看着简单&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬