C++––初识C++

目录

一.绪言

1.什么是C++

2.C语言和C++的关系

2.1数据类型

2.2数据类型的长度

2.3变量和常量

2.4字符串操作

2.5判断和选择语句,循环语句

2.6逻辑运算符

2.7函数的声明和调用

2.8数组

2.9操作符

二.C++入门的基本知识

1.命名空间

2.输入&输出

3.缺省参数

4.函数重载

5.名字修饰

6.引用

7.内联函数

8.auto关键字

9.for

10.指针


一.绪言

1.什么是C++

在前面的学习中,我们在接触c语言的时候,我们先学习的最简单的语句

#include<stdio.h>

int main()
{
	printf("hello world\n");
}

那么,在c++的学习中,我们也从最简单的语句开始学习

#include<iostream>

int main()
{
	std::cout << "Hello world" << std::endl;
	return 0;
}

让我们逐行解释

1.#include<iostream> --预处理指令,它告诉编译器引入iostream库,这个库包含了输入和输出的功能

2.int main()   --C++程序的人口

main函数是每个C++程序必有的函数,程序从这里开始执行
3.{}  --代码块的开始和结束

4.std::cout   --输出流对象,用于将文本输出到控制台

5.<<   --输出运算符,用于将文本或其他数据插入到输出流中

6.Hello world  --输出的文本

7. std::endl  --一个特殊的控制字符,表示换行并刷新输出流

8. return 0;  --main函数的结束语句,0是程序的返回值

2.C语言和C++的关系

C++是C语言的扩展和增强版本

C++兼容C

当然,c语言的知识在c++也同样适用

2.1数据类型

int    short    long    long long    float    double    char    bool

声明和初始化变量:<数据类型>  <变量名> = <初始值>;

int age = 20;
char name = "qwl";
bool isPassed = true;
2.2数据类型的长度

2.3变量和常量

变量:变量名,变量类型,变量值

常量:就是在程序中固定不变的值

2.4字符串操作

strlen(str):返回字符串的长度(不包括\0)

strcpy(dest, src):将源字符串拷贝到目标字符串

strcat(dest, src):将源字符串连接到目标字符串的末尾

strcmp(str1, str2):比较两个字符串的大小关系

substr(pos, len):返回从指定位置开始的指定长度的子字符串

字符串相关的函数-CSDN博客

2.5判断和选择语句,循环语句

if语句

if else语句

switch语句

for语句

while语句

do while语句

循环结构知识总结-CSDN博客

选择结构知识总结(入门)-CSDN博客

2.6逻辑运算符

&&    ||    !

操作符知识-CSDN博客

2.7函数的声明和调用

函数(基本知识总结)-CSDN博客

2.8数组

数组的知识总结-CSDN博客

2.9操作符

操作符知识-CSDN博客

二.C++入门的基本知识

1.命名空间

namespace

在c语言中,如果是在全局中的变量,没有在main函数中,那么c语言不能解决这类问题,就需要c++处理

1.1命名空间定义

一般格式:

namespace  命名空间的名字

{

内容

}

1.1.1一般用法
namespace qwl
{
int rand = 10;
}
1.1.2嵌套使用
namespace qwl
{
int rand = 10;
namespace qwl2
{
int r = 2;
}
}
1.1.3同一命名空间名称
namespace q
{
int rand = 10;
}
namespace q
{
int r = 1;
}

 1.2命名空间的使用

1.2.1命名空间名称及作用域限定符
int main()
{
	printf("%d\n", N::a);
	return 0;
}
1.2.2使用using引入某个成员
using N::b;
int main()
{
	printf("%d\n", N::a);
	printf("%d\n", b);
	return 0;
}
1.2.3使用using namespace 命名空间名称   引入
using namespace N;
int main()
{
	printf("%d\n", N::a);
	printf("%d\n", b);
	ADD(10, 20);
	return 0;
}

2.输入&输出

cout输出

cin输入

endl换行输出

3.缺省参数

声明或定义函数时为函数的参数指定一个缺省值,如果没有指定实参就用形参的缺省值

void Func(int a = 0)
{
	cout << a << endl;
}

int main()
{
	Func();//没有传参就使用默认值
	Func(10);//使用指定的实参

	return 0;

3.1全缺省参数

void Func(int a = 10, int b = 20, int c = 30)
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl;
//}

3.2半缺省参数

void Func(int a, int b = 20, int c = 30)
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl;
//};

1.半缺省参数必须从右往左依次给出,不能间隔着给

2.缺省参数不能在函数定义和声明中同时出现

3.缺省值必须是常量或者全局变量

4.c语言不支持

4.函数重载

c++允许在同一个作用域内声明几个同名函数,这些同名函数的形参列表不同

4.1参数类型不同

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(10, 20);
	Add(10.1, 20.1);

	return 0;
}

4.2参数个数不同

void f()
{
	cout << "f()" << endl;

}

void f(int a)
{
	cout << "f(int a)" << endl;

}

int main()
{
	f();
	f(10);

	return 0;
}

4.3参数类型顺序不同

void f(int a, char b)
{
	cout << "f(int a, char b)" << endl;

}

void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;

}

int main()
{
	f(10, 'b');
	f('b', 10);

	return 0;
}

5.名字修饰

c语言不支持重载,因为同名函数不能区分(返回值不同不能构成重载,调用不能区分调用哪个)

c++可以,因为它通过函数修饰区分,只要参数不同,修饰出来的名字就不一样

6.引用

给已存在变量取一个别名

没有引用之前,取地址再解引用

//c语言二级指针

typedef struct ListNode
{
	int val;
	struct ListNode* next;
}ListNode;


void PushBack(ListNode** pphead, int x)
{
	ListNode* newnode;
	if (*pphead == NULL)
	{
		*pphead = newnode;
	}
	else
	{

	}
}

int main()
{
	ListNode* plist = NULL;
	PushBack(*plist, 1);
	PushBack(*plist, 2);
	PushBack(*plist, 3);
	return 0;
}

//cpp引用

typedef struct ListNode
{
	int val;
	struct ListNode*& next;
}ListNode;


void PushBack(ListNode& phead, int x)
{
	ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));
	if (phead == NULL)
	{
		phead = newnode;
	}
	else
	{

	}
}

int main()
{
	ListNode* plist = NULL;
	PushBack(plist, 1);
	PushBack(plist, 2);
	PushBack(plist, 3);
	return 0;
}

 输出型参数

6.1引用特性

1.引用在定义时必须初始化

2.一个变量可以有多个引用

作为别名不能修改

6.2常引用

在引用的过程中,权限可以平移,可以缩小,不可以放大

const int a = 10;
//权限放大
int& ra = a;
int b = a;//可以 因为这里是赋值拷贝,b修改不影响a
//权限平移
const int& c = a;
//权限缩小
int x = 0;
const int& y = x;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Node.js全栈:从一个简单的例子开始

第一章&#xff1a;从一个简单的例子开始第二章&#xff1a;看官方文档的艺术第三章&#xff1a;浏览器显示一个网页 首先&#xff0c;在VSCode编辑器中打开一个没有任何文件的空目录&#xff0c;然后创建一个package.json文件。 为了方便大家复制&#xff0c;我把文件内容放到…

【C语言项目】贪吃蛇(下)

个人主页~ 源码在Gitee仓库~ 上一篇贪吃蛇&#xff08;上&#xff09;~ 贪吃蛇 四、核心的实现游戏测试1、GameStart&#xff08;1&#xff09;控制台窗口大小和名字设置&#xff08;2&#xff09;光标隐藏&#xff08;3&#xff09;打印欢迎界面&#xff08;4&#xff09;创建…

加入全球少儿编程运动:Scratch让每个孩子都能成为创造者(Scratch最新版客户端和初/中/高级学习资料整理分享)

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f3e1; 演示环境 &#x1f3e1;&#x1f4d2; 文章内容 &#x1f4d2;&#x1f4dd; 安装与使用&#x1f4dd; 社区与资源 &#x1f388; 获取方式 &#x1f388;⚓️ 相关链接 ⚓️ &#x1f4d6; 介绍 &#x1f4d6; 你知道…

没有公网ip,如何实现外网访问内网?

目前拨号上网是最广泛的上网方式&#xff0c;这种方式优点是价格便宜&#xff0c;缺点是没有固定公网ip&#xff0c;每次重新您拨号ip地址都会变。如果有一台服务器&#xff0c;需要实现外网访问&#xff0c;在没有固定公网ip的环境下&#xff0c;该如何实现呢&#xff1f;使用…

2.4 输入和显示

本节必须掌握的知识点&#xff1a; 示例五源代码 代码分析 汇编解析 2.4.1 示例五 ■格式化输入函数scanf scanf函数可以从键盘读取输入的信息。scanf函数同样可以像printf函数那样&#xff0c;通过转换说明“%d”来限制函数只能读取十进制数。scanf函数的参数为可变参数…

外网如何访问内网?快解析

由于公网IP资源短缺&#xff0c;我们的电脑大多处于内网环境&#xff0c;如何在外网访问内网电脑&#xff0c;成为一个令人头疼的问题&#xff0c;下面我给大家推荐一个非常实用的方法。 1&#xff1a;访问快解析下载安装快解析服务器 2&#xff1a;运行软件&#xff0c;点击“…

08.4.grafana自定义图形并直接数据库取值

grafana自定义图形并直接数据库取值 自定义添加油表图形 选择gauge图形&#xff0c;并且配置对应设定值&#xff0c;点击应用 如图所示&#xff0c;可以看到仪表盘上的值是zabbix上取得值 配置grafana直接数据库取值 添加mysql数据源 添加后进行配置&#xff0c;我这…

计算机毕业设计python+spark知识图谱音乐推荐系统 音乐数据分析可视化大屏 音乐爬虫 LSTM情感分析 大数据毕设 深度学习 机器学习

本科毕业设计&#xff08;论文&#xff09;开题报告 课题名称 基于Spark的音乐推荐与数据分析系统 的设计与实现 课题类型 系统设计 学院 大数据与人工智能学院 班级 专业 数据科学与大数据技术 指导教师 职称 学生姓名 学号 重庆工程学院教务处制 1.课…

函数模板底层本质

#include<iostream> using namespace std;template<typename T1> T1 ave(T1 a, T1 b) { return a b; }int main() {ave(100, 200);ave(short(100), short(200));return 0; }反汇编代码 模板本质是编译器帮忙生成了不同的函数 就算非类型参数值不一样编译器也重新…

开发一款相亲交友小程序

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

STM32F407-驱动SHT41采集温湿度

STM32F407-驱动SHT41采集温湿度 SHT41 SHT41通过I2C方式进行驱动 从机地址&#xff1a; 0x44 获取数据方式 1&#xff09;先发送I2C写&#xff0c;写入特定指令 2&#xff09;延时一段时间&#xff0c;等待SHT41处理 3&#xff09;再进行I2C读&#xff0c;读数据即可 一些…

【谷粒商城】02安装和配置git

1.下载和安装git 地址&#xff1a;https://git-scm.com/download/win 傻瓜式安装 2.配置git DELLLJL MINGW64 ~/Desktop $ git config --global user.name "yufuabu"DELLLJL MINGW64 ~/Desktop $ git config --global user.email "463999534qq.com"DELL…

智慧管家物业管理系统(小组项目)

目录 前言 一、项目介绍 1、目的和背景 2、项目主要内容 3、技术介绍 二、功能模块 1、重要文件结构 2、功能实现&#xff08;部分个人负责模块功能&#xff09; 2.1 展示房源信息页面 2.2 房屋详情页面 2.3 房源信息管理 三、功能模块页面 1、前台模块 2、后台…

【Mac】Ghost Buster Pro(苹果电脑内存清理专家) v3.2.5安装教程

软件介绍 Ghost Buster pro是一款针对Mac系统的电脑清理和优化工具&#xff0c;可以帮助用户清理系统垃圾、修复注册表错误、卸载不需要的软件、管理启动项等&#xff0c;从而提高系统性能和稳定性。 安装教程 1.打开镜像包&#xff0c;拖动「Ghost Buster Pro」到应用程序中…

UnitTest / pytest 框架

文章目录 一、UnitTest框架1. TestCase使用2. TestSuite 和 TestRunner3. TestLoader4. Fixture装置5. UnitTest断言1. 登录案例 6. 参数化1. parameterized插件 7. unitTest 跳过 二、pytest 框架1. 运行方式3.读取配置文件(常用方式) 2. pytest执行用例的顺序1. 分组执行(冒烟…

华为数据之道第二部分导读

目录 导读 第二部分 第4章 面向“业务交易”的信息架构建设 信息架构的四个组件 数据资产目录 数据标准 数据模型 数据分布 信息架构原则&#xff1a;建立企业层面的共同行为准则 信息架构建设核心要素&#xff1a;基于业务对象进行设计和落地 按业务对象进行架构设…

vue3+ts--实际开发之--table表格打印或者保存

vue3实现指定区域打印&#xff08;导出&#xff09;功能-主要是解决分页内容分割问题 一、 问题页面效果二、 Print.js相关属性 和使用1. 介绍2. 安装引入3. PrintJS参数配置表 三 、解决关于分页文字或者表格被分割问题&#xff0c;解决后如下&#xff1a;1. 设置一个自定义ta…

20240512,函数对象,常用算法:遍历,查找

函数对象 函数对象基本使用 重载 函数调用操作符 的类&#xff0c;其对象被称为函数对象&#xff1b;函数对象使用重载的&#xff08;&#xff09;时&#xff0c;行为类似函数调用&#xff0c;也叫仿函数 函数对象&#xff08;仿函数&#xff09;本质是一个类&#xff0c;不是…

创新案例|为何农夫山泉创新战略升级为一家零售科技公司

农夫山泉上市的消息被公之于众后&#xff0c;几乎所有人都将目光投向了这家国内家喻户晓的饮料公司&#xff0c;谁都想第一时间内窥探它的庐山真面目。 当然&#xff0c;在此之前已经有多路消息通过旁敲侧击&#xff0c;从管窥中获取了一些农夫山泉的真实数据。 去年6月&…

OCR技术在历史文献数字化中的革命性作用

随着数字化技术的不断发展&#xff0c;历史文献的数字化已成为保存和传播文化遗产的重要途径。其中&#xff0c;光学字符识别&#xff08;OCR&#xff09;技术在历史文献数字化中发挥了革命性的作用&#xff0c;为研究者提供了更广阔的研究空间&#xff0c;推动了历史学研究的发…