IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++第一次课学习内容 -> 正文阅读

[C++知识库]C++第一次课学习内容

目录

1.头文件和命名空间?

2.C++中的标准输入输出(接图1.1)?

3.新的数据类型?

?4.C++函数思想


1.头文件和命名空间

?

#include<stdio.h>
//#include<cstdio>	//C++包含c语言中的标准库的时候
#include<iostream>	//C++中的标准输入输出头文件,类似c中的stdio.h


namespace MM{
	//空间中成员(数据)
	int a=1;
	void print(){
		printf("MM中的函数\n");
	}
}

namespace GG{
	int a=2;
	void print();	//空间中声明
}
//空间外实现
//::作用域分辨符  ::后面的东西是从 ::前面来的
void GG::print(){
	printf("GG中的函数\n");
}

//空间名的嵌套与空间内容访问(剥洋葱)
namespace A{
	int aa = 1;
	namespace B{
		int bb = 2;
	}
}
void visitedNamespace(){
	A::aa = 1;				//访问aa
	A::B::bb = 5;			//访问bb
	using namespace A::B;	//nsing语法的使用
	bb = 123;
	using namespace A;
	aa = 124;
	B::bb = 125;
}

int xx = 1;	//全局变量

int main(){
	int xx = 2;
	printf("%d\n", xx);		//采用就近原则:2
	printf("%d\n", ::xx);	//采用全局变量:1	::作用1:用来标识全局变量
	//::作用2:用空间名限定去访问
	printf("%d\n", MM::a);	//访问MM中的a
	printf("%d\n", GG::a);
	MM::print();
	GG::print();

	//using语法,可省前缀(只在当前作用域下有效)
	using namespace MM;
	printf("%d\n", a);	//MM中的东西
	print();			//MM中的东西
	//使用using namespace时不要存在二义性
	using namespace GG;
	//a=13;				//二义性,MM和GG中都有a
	GG::a = 123;		//指定a从哪来

	while (1);
	return 0;
}

2.C++中的标准输入输出(接图1.1)

?

#include<iostream>	//C++的输入输出头文件
using namespace std;	//一般写这里,避免std的前缀使用
//C++标准输入输出
void testCinCout(){
	//cout输出1.基本变量打印不需要格式控制
	cout << "ILoveyou\n";
	char str[] = "ILoveyou\n";
	cout << str;
	//2.打印多个数据
	int a = 1;
	float b = 1.1;
	cout << a << "\n" << int(b) << "\n";
	//3.隐式转换:C和C++一样
	int g = 2.567;
	cout << g<<"\n";
	//4.C++换行:可用关键字endl替换"\n"
	cout << a <<endl<< int(b) << endl;

	//cin输入
	int iNum = 3;
	float fNum = 3.6f;
	cout << "请输入一个整数,一个浮点数,一个字符串:";//中间用空格或回车隔开
	cin >> iNum >> fNum >> str;
	cout << iNum << "\t" << fNum << "\t" << str << endl;
}

//字符串输入空格问题
void testStr(){

	char str[10] = "";
	//不带空格的输入
	cin >> str;	
	cout << str;
	//带空格的输入--->了解
	cin.getline(str, 10);
	cout.write(str, 10);
	//while (getchar() != '\n');//字符和字符串输入前,做了输入
	char c;
	cin >> c;
	cout << c;
}
int main(){
	//testCinCout();
	testStr();
	while (1);
	return 0;
}

3.新的数据类型

?

#include<iostream>
using namespace std;
//bool类型
void testBool(){
	bool bNum = 123;//bool类型输出只有1和0
	cout << bNum << endl;//输出1
	bNum = false;
	bNum = true;
	cout << bNum << endl;
	//boolalpha 用true和false方式打印bool类型
	cout << boolalpha << bNum << endl;
}

//指针中的NULL,C++中用 关键字:nullptr代替
void testnullptr(){
	int* p = nullptr;	//NULL
	char* pc = NULL;
}

void printStr(const char* str){//形参要用const修饰
	cout << str << endl;
}
//引用类型:&	理解为取别名(不是取地址)
void testQuote(){
	//1.基本引用
	int a = 1;
	//类型& 别名=真名
	int& a1 = a;
	a1 = 345;
	cout << a << endl;	//输出为345
	//2.C++中常量要求更严格,要用const修饰
	printStr("ILoveyou");
	char str[] = "ILoveyou";
	printStr(str);
	//3.常引用
	//int& x = 1;		//报错,没有用const修饰
	int aa = 1;
	const int& x = 1;	//第一种写法:const修饰
	const int& x2 = aa;	//可以给左值起别名,给aa起别名x2
	//右值引用,只能给右值起别名
	int&& b = 1;		//常量是右值(运算符的右边)
	//int&& b1 = b;		//报错,给b起别名b1,不行,&&右值引用只能给右值起别名
}

//引用一般用在哪?1.函数参数
void modifyA(int a){	//形参a=1001 并没有改变 实参aa=1的值,形参!=实参
	a = 1001;
}
void modifyB(int& a){	//int& a(形参)改变了aa(实参),加了引用&后 形参=实参
	a = 1002;
}
void swap(int& a, int& b){	//swap:交换,加了引用&后 形参=实参
	int temp = a;
	a = b;
	b = temp;
}

//1.1函数参数之指针的引用
int g_num = 1001;
void modifyPointA(int* p){	//无效,形参p=1001 并没有改变 实参pa=1008的值
	p = &g_num;
}
void modifyPointB(int*& p){	//有效,形参p=1001 改变了 实参pa=1008的值,输出为1001,int*& p(形参)=pa实参
	p = &g_num;
}
//右值引用
void printRightValue(int&& a){
	a += 11;	//增加一个可以修改的功能
	cout << a << endl;
}
//常引用
void printRight(const int& a){
	//a += 11;	//报错,常引用不能修改
	cout << a << endl;
}

//不返回引用,返回值就是一个值,这个值只能是右值
int getData(){
	return g_num;
}
//返回全局变量g_num的引用,增加左值使用
int& getValue(){
	return g_num;
}
//使用引用
void useQuote(){
	//当作函数参数使用
	int aa = 1;		//实参aa
	modifyA(aa);	//拷贝本
	cout << aa << endl;		//输出为1,不是1001
	modifyB(aa);
	cout << aa << endl;		//输出为1002
	int bb = 22;
	swap(aa, bb);	//交换1002和22
	cout << aa << "\t" << bb << endl;
	//当作函数参数使用之指针的引用
	int pa = 1008;//实参pa
	int* p = &pa;
	modifyPointA(p);
	cout << *p << endl;	//还是1008,modifyPointA(p)中的1001并没有传进来
	modifyPointB(p);
	cout << *p << endl;	//这个B函数输出的才是形参p=1001

	printRightValue(18);	//输出29:18+11
	printRight(19);			//输出19
	//返回值就是一个值,这个值只能是右值
	//getData() = 9;		//报错,参照1=2,2不能赋值给1
	getValue() = 8;			//返回引用 表示返回变量本身
	cout << g_num << endl;	//输出为8
}

int Max(int a, int b){//找最大值
	return a > b ? a : b;
}
void printMax(int(*pMax)(int, int), int a, int b){
	cout << pMax(1, 2) << endl;
}

struct Node{
	int data;
};
void testAuto(){
	auto a = 1;
	//auto b;	//报错,auto不能定义变量,要赋值
	auto pMax = Max;	//函数指针
	cout << pMax(1, 2) << endl;//输出最大值2
	auto ppMax = printMax;
	//等效下面代码
	void(*p)(int(*)(int, int), int, int) = printMax;
	ppMax(pMax, 2, 3);
	//decltype
	struct Node pStruct = { 1 };
	auto pS = &pStruct;	//自动推断为struct Node*类型
	auto pA = pStruct;	//自动推断为struct Node类型
}
int main(){
	//testBool();
	//testQuote();
	//useQuote();
	testAuto();
	
	while (1);
	return 0;
}

?4.C++函数思想

#include<iostream>
using namespace std;
//内联函数:inline修饰的函数,短小精悍
inline int Max(int a, int b){
	return a > b ? a : b;
}
void print(int a){
	cout << a << endl;
}
//函数重载,允许 同名(print)不同参数 的函数存在
void print(int a, int b){	//数目不同
	cout << a + b << endl;
}
void print(int a, char b){	//类型不同
	cout << a + b << endl;
}
void print(char a, int b){	//顺序不同
	cout << a + b << endl;
}
//函数缺省
void printData(int a = 1, int b = 2, int c = 3, int d = 4){
	cout << a + b + c + d << endl;
}
int main(){
	print(1, 'A');			//重载调用,优先调用类型一致的"int,char"
	
	printData();			//默认调用初始化的值1+2+3+4
	printData(10);			//10+2+3+4
	printData(10,20);		//10+20+3+4
	printData(10,20,30);	//10+20+30+4
	printData(10,20,30,40);	//10+20+30+40

	while (1);
	return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:25:37  更:2021-11-14 21:29:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:59:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码