初识C++(一)

news2024/11/13 8:04:53

目录

一、什么是C++

二、关键字:

三、命名空间 :

1. C语言存在的问题:

2. namespace关键字:

3. 注意点:

4.使用命名空间分为三种:

四、输入输出:

五、缺省函数:

        1. 什么是缺省函数:

        2.注意点: 

        3. 这个省略函数的用途: 


一、什么是C++

        C++是一种面向对象的高级程序设计语言。

        C++是在C语音的基础上,添加了一些祖师爷在写代码的时候的一些困惑。把他自己的想法在C语言的基础上实现。因此C++也可以兼容C语言。

二、关键字:

        c++ 一共63个关键字

        对比c语言的32个更多了一些,在之后的学习中我会挑一部分来讲

三、命名空间 :

1. C语言存在的问题:

        在预处理的时候,会把#include<stdlib.h>展开,里面也有rand,这个是作用在全局域中,然后你又在全局域中定义了一个rand变量。这就是名字冲突,在C语言中没有很好的解决方法,只能通过改名字。

        但是在实际的项目中,由不同小组的人完成,刚好他们都用到了同一个变量名,C语言的话就只能他们两个干一架,决定名字的使用权。

在C++中就引入了一个命名空间

2. namespace关键字:

namespace ABC
{
    ...
}

        像这样子就把你写的代码放到了一个名字叫ABC的域中(建起了一座围墙,如果你不开一条路,你就不能访问里面的东西)

        在正常情况下,编译会先去局部空间中查找有没有这个变量,然后再去全局中找。如果没有找到,也没有using namespace的话,不会到命名空间中找。(就相当于建起了一座保护墙)


3. 注意点:

       1)  namespace的命名空间:

              只影响使用,不影响生命周期。因为namespace的命名空间也是全局域的,只是编译器不去查找,不要自我认为它不是全局域的。

       2)可以嵌套使用namespace关键字

namespace ABC
{
   namespace DEF
    {
        int a;
    }
}

        这样子使用的时候是ABC::DEF::a=10;

       3)标准库的命名空间是std   也就是说你要使用标准库的cout等,

你需要包含#include<iostream>  然后在用的时候std::cout<<i<<std::endl;

        4)多个文件中定义的域的名字相同,会把他们合并起来。

         讲了什么是命名空间之后,我再讲命名空间怎么使用,其实上面我已经提到了一些。在这里我再详细说一下。

         讲的时候会涉及到::符号,::域作用限定符,会去前面提到的域中查找,如果前面为空,就去全局去找,不会在其他域中查找。

std::cout<<i<<std::endl;//endl相当于换行,和printf("\n");一样的效果
::n=10;//前面没有提到是什么域,就会去全局域中查找

4.使用命名空间分为三种:

1.全局展开:

#include<iostream>
using namespace std;//全局展开
int main()
{
    int i;
    cin>>i;
    cout<<i<<endl;
}
    

        辛辛苦苦把墙建起来,用了全局展开,就相当于把墙给拆掉了。

        在练习的代码中,可以这么干,因为就几十行的代码,大不了我们把命名改了。

        但是在项目的时候,一定不能这么写。那是十几万行的代码。很容易和其他组的人写重名。

2.局部展开:

#include<iostream>
using std::endl;
using std::cout; 
int main()
{
    int i=10;
    std::cin>>i;
    cout<<i<<endl;
}

        展开一部分比较常用的,如果不展开,每一次都写,太繁琐了。

3.不展开:

        在每一次要用的时候就  域::变量; 

四、输入输出:

       <<   符号是流插入运算符

        比我们c语言方便的一点是 可以自动识别类型。

        我们这里cin是一个标准输入流,cout是标准输出流。 

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
int main()
{
	int i = 0;
	std::cin >> i;
	double* arr = (double*)malloc(sizeof(double) * i);
	if (arr == NULL)
	{
		perror("malloc error");
		exit(-1);
	}
	for (int j = 0; j < i; j++)
	{
		std::cin >> arr[j];
	}
	for (int j = 0; j < i; j++)
	{
		std::cout << arr[j]<<std::endl;
	}
 return 0;
}

        可以看出,cin可以自动识别类型。你可以觉得不怎么样。但是到后面结构体那些的时候就会很方便了。

五、缺省函数:

        1. 什么是缺省函数:

         函数传参的时候,如果不想传,也可以不传,会有一个默认参数值。

void fun(int a = 0)
{
	std::cout << a << std::endl;
}
int main()
{
	fun(1);
	fun();
	return 0;
}

        如果传了参数,int a=0就不起作用。

        这个0就是舔狗界的王。当人家有男票的时候,你有多远就走多远。当人家没有男票的时候,你就屁颠屁颠的靠近。 

        2.注意点: 

        不能跳跃,省略参数必须从右往左连续缺省。

        因为实参是从左往右传的。

//不能跳跃
//省略参数必须从右往左连续缺省       如func(int a=10;int b;int c=30) -->错误的,要从右往左缺省
//                                  func(int a;int b=20;int c=30) -->对的
//因为实参是从左往右传给形参的
void func(int a = 10, int b = 20, int c = 30)
{
	std::cout << a << std::endl;
	std::cout << b << std::endl;
	std::cout << c << std::endl;
}
int main()
{
	func(1);
	func(1, 2);
	func(1, 2, 3);
	return 0;
}

        3. 这个省略函数的用途: 

        当你初始化栈的时候,不可以写死,一开始就开4个大小的空间。那如果需要100万的空间,那你还需要不断的扩容。

        你可能知道最大的空间是多少,那你就直接传参。

        有可能你也不知道传多大。那就什么都不传。

        这个情况就很适合用缺省函数了。

//用途在初始化的时候,很灵活,只要你知道你想开多少的空间,就按你传的数据来,如果你不知道想要传多少,就用缺省产生
typedef struct stack
{
	int* arr;
	int top;
	int capacity;
}stack;
void stackInit(stack* st, int a = 4)
{
	st->arr = (int*)malloc(sizeof(int*) * a);
	if (st->arr == NULL)
	{
		perror("malloc error");
		exit(-1);
	}
	st->top = 0;
	st->capacity = a;
}
int main()
{
    stack st1; 
    stack st2;
    stackInit(&st1,100);//在你知道最多需要100个空间的时候,你直接传进去,可以省略多次的扩容
    stackInit(&st2);//不传参,就一开始开辟4个空间
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1537494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年【山东省安全员C证】考试试卷及山东省安全员C证复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 山东省安全员C证考试试卷是安全生产模拟考试一点通生成的&#xff0c;山东省安全员C证证模拟考试题库是根据山东省安全员C证最新版教材汇编出山东省安全员C证仿真模拟考试。2024年【山东省安全员C证】考试试卷及山东省…

《妈妈是什么》笔记(二) 让孩子自己做选择

经典摘录 孩子也会需要独立的空间做事情&#xff0c;求独立、求空间、求私隐 对于不管因为什么&#xff0c;别人在受到肯定和赞赏的时候&#xff0c;会对我们自己的心理带来因“比较”而产生的不适感甚至嫉妒感&#xff0c;进而在行为上影响了我们自己的节奏&#xff0c;产生一…

STL 容器元素减少但内存没有下降且不会自动释放,如何在运行时释放多余内存?【C++】

STL 容器元素减少但内存没有下降且不会自动释放&#xff0c;如何释放多余内存&#xff1f; 前言利用 swap 和匿名对象的性质进行收缩内存 前言 C程序里面我们经常会用到STL容器&#xff0c;容器在运行过程中可能会增长&#xff0c;导致它们分配的内存比实际存储的元素所需的内…

Linux源码包安装

目录 一、transmission源码包安装 二、 nginx源码包安装 一、transmission源码包安装 1、下载编译环境所需的软件包依赖 2、下载transmision源码包到用户主目录下 https://github.com/transmission/transmission/releases/download/4.0.5/transmission-4.0.5.tar.xz 3、解压…

python第三次项目作业

打印课堂上图案 判断一个数是否是质数&#xff08;素数&#xff09; 设计一个程序&#xff0c;完成(英雄)商品的购买&#xff08;界面就是第一天打印的界面&#xff09; 展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款 输入付款金额->打印购买小票&a…

java 调用window操作系统文本转语音并生成播放文件

一、完整资源直接看这里&#xff1a; java调用window操作系统文本转语音并生成播放文件资源-CSDN文库 二、所需材料 材料一&#xff1a;最关键的&#xff0c;需要引用jacob包&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project x…

Vue2(七):超详细vue开发环境搭建(win7),nodejs下载与安装,安装淘宝镜像(报错已解决),配置脚手架

一、安装node.js 本来想粗略写一下的&#xff0c;但是搭建脚手架的时候&#xff0c;遇到了很多问题&#xff0c;浪费快两天时间&#xff0c;记录一下自己的解决办法希望对你们有帮助&#xff01; 1.下载nodejs 安装包下载链接【CNPM Binaries Mirror】 下载我划线的这个&am…

Linux(openEuler)部署SpringBoot前后端分离项目(Nginx负载均衡)

假如数据库在本地&#xff0c;没有放在Linux中 1.先把数据库中root的主机改成% 2.项目中的数据库链接配置换成本机ip 3.打包 4.把打包好的jar包放到Linux中 一般把jar包放到opt下 5.把前端部分拷贝到Linux的nginx中 5.1在package.json中修改build的值为图中这样 5.2同时由于在…

外包干了10天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

SpringMVC 简介及入门级的快速搭建详细步骤

MVC 回顾 MVC&#xff0c;即Model-View-Controller&#xff08;模型-视图-控制器&#xff09;设计模式&#xff0c;是一种广泛应用于软件工程中&#xff0c;特别是Web应用开发中的架构模式。它将应用程序分为三个核心组件&#xff1a; Model&#xff08;模型&#xff09;&#…

经纪人资格认证考试资料

一、名词&#xff1a; 1. 自然人、个体工商户、演出经纪人、演出经纪单位、演出市场主体、演出市场客体、 2. 营业执照、行政许可证 3. 居间、代理、行纪&#xff1a;演出经纪机构、个体经纪人分别有哪些权限&#xff1f; 4. 自行举办&#xff1a;文艺表演团体、个体演员&am…

Shell脚本学习-if循环

最小化的if语句 无实际用途 if [ ] ;then echo fi 脚本解释 if 判断 [ ] 里面的条件是否成立 后面跟then&#xff0c;代表条件成立 如果在一行则使用分号隔离&#xff08;;&#xff09; 如果不在一行使用则直接在下一行驶入then即可。 如果条件成立则输出echo 后面…

罐头鱼AI视频矩阵运营获客系统|视频批量混剪

智能化运营&#xff0c;助力视频营销——AI视频矩阵运营系统全面解析 随着数字营销时代的到来&#xff0c;视频已成为各行业推广和营销的重要手段之一。为了更好地管理和发布视频内容&#xff0c;我们推出了全新的AI视频矩阵运营系统&#xff0c;集成了多项智能功能&#xff0c…

张桥社区组织“平安大讲堂”企业应急救护及消防主题培训

为进一步加强园区商户的平安生产意识&#xff0c;提升应急救护能力&#xff0c;在襄阳市民政局的指导和支持下&#xff0c;襄阳市和时代社会工作服务中心依托襄阳市“光明谷”社会组织助力共同缔造项目&#xff0c;联合樊城区红十字会、樊城区点爱志愿者协会在张桥社区“美世界…

第十二届蓝桥杯省赛CC++ 研究生组

十二届省赛题 第十二届蓝桥杯省赛C&C 研究生组-卡片 第十二届蓝桥杯省赛C&C 研究生组-直线 第十二届蓝桥杯省赛C&C 研究生组-货物摆放 第十二届蓝桥杯省赛C&C 研究生组-路径 第十二届蓝桥杯省赛C&C 研究生组-时间显示 第十二届蓝桥杯省赛C&C 研究生组…

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false&#xff0c;其他值都为true ..连接两个字符串

基于Springboot的疫情物资管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的疫情物资管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

阿里云2核4G云服务器ECS和轻量应用服务器价格表

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

TikTok新号必须做的3件事

根据互联网安全公司Cloudflare的2023年互联网流量回顾&#xff0c;TikTok超过谷歌成为2023年最受欢迎的网站。这意味着现在有大量用户在使用TikTok&#xff0c;在TikTok平台上&#xff0c;你可能会突然出名&#xff0c;可能会突然让您的营销获得回报。 但如果你是刚加入TikTok用…

【保姆级教程】YOLOv8_Track多目标跟踪,快速运行

一、YOLOV8环境准备 1.1 下载安装最新的YOLOv8代码 仓库地址&#xff1a; https://github.com/ultralytics/ultralytics1.2 配置环境 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple二、下载测试视频&#xff0c;预训练权重 测试视频 链接&am…