C++学习

一、注释

/*多行
。。。
。。。
注释*/
//单行注释
#include <iostream>
using namespace std;
int main() {
	cout << "hellow" << endl;
	system("pause");
	return 0;
}

二、变量定义

#include <iostream>
using namespace std;
int main()
{
	int a = 10;//变量定义
	cout << "a="<<a << endl;
	system("pause");
	return 0;
}

三、常量

用于记录程序中不可更改的数据

#include <iostream>
using namespace std;

//两种定义方式
//define 宏常量,不可修改,一旦修改就会报错
//const 修饰的变量
#define Day 7
int main()
{
	Day = 14;
	cout << "Day="<<Day << endl;
	system("pause");
	return 0;
}
#include <iostream>
using namespace std;

//两种定义方式
//define 宏常量,不可修改,一旦修改就会报错
//const 修饰的变量也是常量,不可修改
#define Day 7
int main()
{
	//Day = 14;
	cout << "Day="<<Day << endl;
	const int mount = 12; 
	mount = 24
	system("pause");
	return 0;
}

四、命名规则

  • 标识符不可以是关键字
  • 标识符由字母,数字,下划线构成
  • 标识符第一个字母只能是字母或下划线
  • 标识符是能够区分大小写的

五、数据类型

1.整型
在这里插入图片描述

#include <iostream>
using namespace std;
int main()
{
	short num1 = 10; //(-32768,32767)
	int num2 = 10;
	long num3 = 10;
	long long num4 = 10;
	short num5 = 32769; //打印为-32767
	cout << "num1="<<num1 << endl;
	cout << "num2="<<num2 << endl;
	cout << "num3="<<num3 << endl;
	cout << "num4="<<num4 << endl;
	cout << "num5="<<num5 << endl;
	system("pause");
	return 0;
}

在这里插入图片描述
2.字符串

#include <iostream>
using namespace std;
int main()
{
	char str[] = "hellow";
	cout<<str<<endl;
	//包含头文件 #include <string>
	string str2 = "nihao";
	cout<<str2<<endl;
	system("pause");
	return 0;
}

在这里插入图片描述
3.布尔型
true 真
false 假

#include <iostream>
using namespace std;
int main()
{
	bool flag = true;
	cout<<flag<<endl;
	flag = false;
	cout<<flag<<endl;
	system("pause");
	return 0;
}

在这里插入图片描述
4.浮点型

#include <iostream>
using namespace std;
int main() 
	//float 单精度  4字节
	//double 双精度  8字节
{
	float f1 = 3.1415926f;
	cout<<f1<<endl;
	double f2 = 3.1415926;
	cout<<f2<<endl;
	system("pause");
	
	//科学计数法
	float f3 = 3e2;//3*10~2
	cout<<f3<<endl;
	float f4 = 3e-2;//3*0.1~2
	cout<<f4<<endl;
	return 0;
}

在这里插入图片描述
5.键盘输入值

#include <iostream>
using namespace std;
int main() 
	//cin>>
{
	int a = 0;
	cout<<"请输入a值"<<endl;
	cin>>a;
	cout<<a<<endl;

	return 0;
}

六、运算符

1.算数运算符
在这里插入图片描述
注意:两个小狮是不可以做取余运算的

#include <iostream>
using namespace std;
int main() 
{
	//前置递增
	int a1 = 10;
	int b1 = ++a1*10;//先让变量加1,然后进行表达式计算
	cout<<a1<<endl;
	cout<<b1<<endl;

	//后置递增
	int a2 = 10;
	int b2 = a2++*10;//先进行表达式计算,后让变量加1
	cout<<a2<<endl;
	cout<<b2<<endl;
	return 0;
}

2.赋值运算符
在这里插入图片描述
3.比较运算符
在这里插入图片描述
4.逻辑运算符
在这里插入图片描述

七、函数

1.格式

返回值类型 函数名 (参数列表)
{
	函数体语句
	return 表达式

}

2.函数实现与调用

#include <iostream>
using namespace std;
int add(int num1,int num2)//num1,num2为形参
{
	int num3 = num1+num2;
	return num3;
}
int main() 
{
	int a = 1;
	int b = 2;
	int c = add(a,b); //a,b为实参
	cout<<c<<endl;
	return 0;
}

3.值传递

#include <iostream>
using namespace std;
void change(int num1,int num2)//num1,num2为形参
{
	//交换前
	cout<<"交换前"<<endl;
	cout<<"num1:"<<num1<<endl;
	cout<<"num2:"<<num2<<endl;
	int num3 = num1;
	num1 = num2;
	num2 = num3;
	//交换后
	cout<<"交换后"<<endl;
	cout<<"num1:"<<num1<<endl;
	cout<<"num2:"<<num2<<endl;
	return ;
}
int main() 
{
	int a = 1;
	int b = 2;
	//当函数做值传递时,函数的形参会发生改变,并不会影响实参
	cout<<"前a:"<<a<<endl;
	cout<<"前b:"<<b<<endl;
	change(a,b); 
	cout<<"后a:"<<a<<endl;
	cout<<"后b:"<<b<<endl;
	return 0;
}

4.函数声明

#include <iostream>
using namespace std;
//函数声明,提前告诉编译器函数的存在,可以利用函数的声明,避免主函数在上面报错
void change(int num1,int num2);
int main() 
{
	int a = 1;
	int b = 2;
	//当函数做值传递时,函数的形参会发生改变,并不会影响实参
	cout<<"前a:"<<a<<endl;
	cout<<"前b:"<<b<<endl;
	change(a,b); 
	cout<<"后a:"<<a<<endl;
	cout<<"后b:"<<b<<endl;
	return 0;
}
void change(int num1,int num2)//num1,num2为形参
{
	//交换前
	cout<<"交换前"<<endl;
	cout<<"num1:"<<num1<<endl;
	cout<<"num2:"<<num2<<endl;
	int num3 = num1;
	num1 = num2;
	num2 = num3;
	//交换后
	cout<<"交换后"<<endl;
	cout<<"num1:"<<num1<<endl;
	cout<<"num2:"<<num2<<endl;
	return ;
}

八、函数的分文件编写

步骤
1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在原文件中写函数的定义

九、指针

1.利用指针变量保存地址

#include <iostream>
using namespace std;

int main() 
{
	//定义指针
	int a = 10;
	int *p;
	p = &a;//指针记录a的地址
	cout<<"a的地址"<<&a<<endl;
	cout<<"指针p的地址"<<p<<endl;
	//指针使用
	//可以通过解引用的方式来找到指针指向的内容
	//指针前加*代表解引用,找到指针指向的内存中的数据
	*p = 1000;
	cout<<"a的值"<<a<<endl;
	cout<<"指针p的值"<<*p<<endl;
	
	
	return 0;
}

2.空指针
用于给指针变量初始化
空指针是不可以进行访问的

#include <iostream>
using namespace std;

int main() 
{
	//空用于给指针变量初始化
	int *p = NULL;
	//空用于给指针变量初始化
	//0-255之间的内存编号是系统占用的,因此不可以访问
	*p = 1000;//会报错
	return 0;
}

3.野指针
指向非法的内存空间

#include <iostream>
using namespace std;

int main() 
{
	//
	int *p = (int *)0x000;
	cout<<*p<<endl
	return 0;
}

4.指针常量,常量指针

#include <iostream>
using namespace std;

int main() 
{
	//const修饰指针  常量指针
	int a = 10;
	int b = 20;
	const int *p = &a;
	//指针指向的值不能改,指针的指向可以改
	//*p = 20  //报错
	*p = &b;//正确
	
	//const修饰常量 指针常量
	//指针的指向不可以改,指针指向的值可以改
	int * const p2 = &a;
	*p2 = 100;//正确的
	p2 = &b;//错误,指向不能改
	
	
	//const 修饰指针和常量
	const int * const p3 = &a;
	//指针的指向和指针指向的值都不可以改
	*p3 = 1000;
	p3 = &b
	return 0;
}

5.指针和数组的配合使用

#include <iostream>
using namespace std;

int main()
{
 	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	int * p = arr;
	for(int i=0;i<10;i++)
	{
		cout<<*p<<endl;
		p++;
	}
}	

6.指针和函数

#include <iostream>
using namespace std;
void seap(int a,int b)
{
	int tem = a;
	a = b;
	b = tem;
}
void seap02(int *a,int *b)
{
	int tem = *a;
	*a = *b;
	*b = tem;
}
int main()
{
 	int a = 10;
	int b = 20;
	//值传递
	//seap(a,b);
	//cout<<a<<endl;
	//cout<<b<<endl;
	//地址传递,会改变实参的值
	seap02(&a,&b);
	cout<<a<<endl;
	cout<<b<<endl;

	
}	

十、结构体

1.定义:

#include <iostream>
using namespace std;
struct Student
{
	string name;
	int age;
	int scroe;
}s3;
int main()
{
	//结构体调用
	//1.struct Student s1;
	struct Student s1;
	s1.name = "xuxu";
	s1.age = 20;
	s1.scroe = 30;
	cout<<"姓名"<<s1.name<<"年龄"<<s1.age<<"分数"<<s1.scroe;
	//2.struct Student s2 = {...};
	struct Student s2 = {"xuxu2",26,100};
	cout<<"姓名"<<s2.name<<"年龄"<<s2.age<<"分数"<<s2.scroe;
	//3在定义结构体时顺便创建结构体变量
	s3.name = "wangwu";
	s3.age = 50;
	s3.scroe = 2000;
	cout<<"姓名"<<s3.name<<"年龄"<<s3.age<<"分数"<<s3.scroe;
   return 0;
}

2.结构体数组

#include <iostream>
using namespace std;
struct Student
{
	string name;
	int age;
	int scroe;
}s3;
int main()
{
	//创建结构体数组
	struct Student arr[3] = {
		{"张三",20,100},
		{"李四",21,101},
		{"王五",22,102},
	};
	//修改结构体数据
	arr[1].name = "liuliu";
	
	//遍历结构体数组
	for(int i=0;i<3;i++)
	{
		cout<<"姓名"<<arr[i].name<<"年龄"<<arr[i].age<<"分数"<<arr[i].scroe;
	}
   return 0;
}

3.结构体指针

#include <iostream>
using namespace std;
struct Student
{
	string name;
	int age;
	int scroe;
};
int main()
{
	//创建结构体数组
	Student s1 = {"xuxu",22,1000};
	//定义结构体指针
	Student *p = &s1;
	//利用指针访问数据
	cout<<p->name<<p->age<<p->scroe<<endl;
   return 0;
}

4.结构体嵌套

#include <iostream>
using namespace std;
struct student
{
	string name;
	int age;
	int score;
};
struct Teacher
{
	int id;
	string name;
	int age;
	struct student stu;
};
int main()
{
   Teacher t;
	t.id = 666;
	t.name = "xuxu";
	t.age = 30;
	t.stu.age = 1000;
	cout<<t.id<<t.name<<t.age<<t.stu.age<<endl;
   return 0;
}

5.结构体参数传递

#include <iostream>
using namespace std;
struct student
{
	string name;
	int age;
	int score;
};
//值传递
void printffun(struct student s)
{
	cout<<s.name<<s.age<<s.score<<endl;

}
//地址传递
void printffun01(struct student *s)
{
	cout<<s->name<<s->age<<s->score<<endl;

}
int main()
{
   student t;
	t.name = "xuxu";
	t.age = 30;
	t.score = 10000;
	printffun(t);
	printffun01(&t);
	//cout<<t.name<<t.age<<t.score<<endl;
   return 0;
}

6.结构体中的const
用以防止误操作

#include <iostream>
using namespace std;
struct student
{
	string name;
	int age;
	int score;
};
//地址传递
void printffun01(const struct student *s)
{
	s->age = 150;
	cout<<s->name<<s->age<<s->score<<endl;

}
int main()
{
   student t;
	t.name = "xuxu";
	t.age = 30;
	t.score = 10000;
	printffun01(&t);
	//cout<<t.name<<t.age<<t.score<<endl;
   return 0;
}

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

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

相关文章

YOLOv8改进 | 注意力机制| 利用并行子网络构建深度较浅但性能卓越的网络【全网独家】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

[PM]原型与交互设计

原型分类 1.草图原型 手绘图稿, 规划的早期,整理思路会使用 2.低保真原型 简单交互, 无需配色, 黑白灰为主, 产品规划和评审阶段使用 标准化的低保真原型是高保真原型的基础 3.高保真原型 复杂交互, 一般用于公开演示, 产品先产出低保真原型, 设计师根据原型产出设计稿 低保…

【ARM】CCI缓存一致性整理

目录 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置​编辑 3.CCI500内部结构​编辑 4.功能描述 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置 3.CCI500内部结构 Transaction Tracker&#xff08;TT&#xff09;是用来解决一致性和ordering问题的&#xff0c;它…

【驱动篇】龙芯LS2K0300之spi设备驱动

实验介绍 GC9A01是一款小巧&#xff08;1.28寸&#xff09;、彩色&#xff08;分辨率为 240 * 240 RGB&#xff09;圆形TFT屏幕&#xff0c;它采用4线 SPI的控制方式&#xff0c;电源供电电压为3.3V&#xff0c;有7个控制引脚&#xff1b;本次实验将使用它来验证龙芯SOC的SPI通…

css实现图片渐变切换效果

一、效果 使用csskeyframes&#xff0c;实现5个图片渐变切换的效果。如下图&#xff1a; 二、代码 1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"w…

头歌资源库(27)特别的数

一、 问题描述 编程输出一个特别的数&#xff0c;该数是一个由1~9组成的9位数&#xff0c;每个数字只能出现一次&#xff0c;且这个9位数由高位到低位前i位能被i整除。 二、算法思想 创建一个长度为9的数组&#xff0c;用于存放1~9这9个数字。使用回溯算法&#xff0c;从第…

(WRF-UCM)高精度城市化气象动力模拟技术

气候变化及应对是政府、科学界及商业界关注的焦点。气候是多个领域&#xff08;生态、水资源、风资源及碳中和等问题&#xff09;的主要驱动因素&#xff0c;合理认知气候变化有利于解释生态环境变化机理及过程&#xff0c;而了解现在、未来气候变化则是进行生态、环境及能源评…

IDEA中配置代理,解决Codearts Snap登陆不了的问题

问题描述&#xff1a;在mac电脑中的idea中安装了华为的codearts snap插件&#xff0c;一直登录不了&#xff0c;账号是没问题的&#xff0c;后来我怀疑是我的代理有问题&#xff0c;找到IDEA中的代理设置先是有这个问题“You have JVM property "https.proxyHost" se…

C++基础(一)

目录 1.不同版本的hello word&#xff01; 2.namespace和&#xff1a;&#xff1a;域作用限定符以及using 2.1 namespace 2.2&#xff1a;&#xff1a; 2.3using用于展开域 3.C输入和输出 4.缺省参数 5.重载 6.引用 6.1引用介绍 6.2 引用的特性 注意&#xff1a; 6.4 c…

C#绘制阻抗圆图初步

阻抗圆图&#xff0c;或者叫史密斯图&#xff0c;是无线电设计方面用的&#xff1b; 基本的阻抗圆图如下&#xff0c; 下面尝试用C#能不能画一下&#xff1b; 先在网上找一个画坐标的C#类&#xff0c;它的效果如下&#xff1b; 自己再增加一个函数&#xff0c;可以绘制中心在…

Redis的安装配置及IDEA中使用

目录 一、安装redis&#xff0c;配置redis.conf 1.安装gcc 2.将redis的压缩包放到指定位置解压 [如下面放在 /opt 目录下] 3.编译安装 4.配置redis.conf文件 5.开机自启 二、解决虚拟机本地可以连接redis但是主机不能连接redis 1.虚拟机网络适配器网络连接设置为桥接模式…

《昇思25天学习打卡营第16天|基于MindNLP+MusicGen生成自己的个性化音乐》

MindNLP 原理 MindNLP 是一个自然语言处理&#xff08;NLP&#xff09;框架&#xff0c;用于处理和分析文本数据。 文本预处理&#xff1a;包括去除噪声、分词、词性标注、命名实体识别等步骤&#xff0c;使文本数据格式化并准备好进行进一步分析。 特征提取&#xff1a;将文…

【嵌入式Linux】<知识点> GDB调试(更新中)

文章目录 前言 一、GDB调试预备工作 二、GDB的启动与退出 三、GDB中查看源代码 四、GDB断点操作 五、GDB调试指令 前言 在专栏【嵌入式Linux】应用开发篇_Linux打工仔的博客中&#xff0c;我们已经写了大量的源程序。但是在调试这些程序时我们都是通过printf大法和肉眼除…

异业联盟整合各大行业门店,共享资源

异业联盟系统是一种将不同行业的企业或商家整合在一起&#xff0c;通过资源共享、优势互补、合作推广等方式&#xff0c;实现共同发展和互利共赢的商业合作模式的数字化管理和运营系统。 其具有以下显著优势&#xff1a; 1.拓展客户群体&#xff1a;不同行业的企业联合起来&am…

Python骨架肌体运动学数学模型

&#x1f3af;要点 &#x1f3af;运动学矢量计算 | &#x1f3af;跳远的运动学计算 | &#x1f3af;关节肢体运动最小加加速度模型 | &#x1f3af;膝关节和踝关节角度二维运动学计算 | &#x1f3af;上下肢体关节连接运动链数学模型 | &#x1f3af;刚体连接点速度加速度计算…

PPTP、L2TP、IPSec、IPS 有什么区别?

随着互联网的发展&#xff0c;保护网络通信的安全越来越重要。PPTP、L2TP、IPSec、IPS是常见的网络安全协议和技术&#xff0c;在保护网络通信安全方面发挥着不同的作用和特点。下面介绍PPTP、L2TP、IPSec、IPS之间的区别。 点对点隧道协议&#xff08;PPTP&#xff09;是一种用…

Android列表控件的属性与用法

列表控件的属性与用法 列表控件有Spinner、ListView、RecyclerView、ViewPager等。列表控件的显示一般涉及3个部分&#xff1a;控件、适配器、数据&#xff0c;这三者之间的关系如图1所示。适配器是数据与列表之间的桥梁&#xff0c;适配器中需要将数据中需要显示的属性与列表…

Qt | 绘制直线与 QLineF 类

点击上方"蓝字"关注我们 01、绘制直线 02、Qline和QLineF 【1】QLine 是整型版本,成员函数较少,QLineF 是精度更高的浮点型版本,本文以 QLineF 类 进行讲解。 QLineF 类提供了一个二维向量,使用 QLineF 类绘制直线可以利用该类中的成员函数方便 的对线条的属…

调试的时候如何查看当前程序的变量信息

目录 调试前/后的调试窗口 ​编辑 调试窗口 --- 监视 调试窗口 --- 内存 调试窗口 --- 调用堆栈 调试前/后的调试窗口 调试前的调试窗口&#xff1a; 调试前的调试窗口是没有显示的&#xff0c;只有在调试的时候才会有相对应的调试窗口 调试后的调试窗口&#xff1a…

如何找工作 校招 | 社招 | 秋招 | 春招 | 提前批

马上又秋招了&#xff0c;作者想起以前读书的时候&#xff0c;秋招踩了很多坑&#xff0c;但是第一份工作其实挺重要的。这里写一篇文章&#xff0c;分享一些校招社招的心得。 现在大学的情况是&#xff0c;管就业的人&#xff0c;大都是没有就业的辅导员&#xff08;笔者见过…