当前位置: 首页 > news >正文

C++使用教程

目录

一、软件使用

二、C++基础规则补充

关键字

整型取值范围

浮点型取值范围

字符型使用规则

字符串型使用规则

布尔类型

常用的转义移字符 

三、数组、函数、指针、结构体补充

1.数组 

2.函数

声明:

分文件编写:

值传递:

 3.指针

空指针:

野指针:

利用指针访问数组中的元素:

利用指针在函数修改实参的值: 

地址传递:

const修饰指针:

1)const修饰指针--常量指针

 2)const修饰常量--指针常量

 3)const既修饰指针,又修饰常量

以冒泡排序为例三者的结合应用

4.结构体 

结构体嵌套

结构体做函数参数

结构体const使用场景 

四、C++语句及函数 

三目运算符

 switch语句

goto语句

system("pause")的使用

sizeof()的使用

stoi( )函数

一、软件使用

Visual Studio

打开在右侧的管理器源代码下创建文件

二、C++基础规则补充

关键字

定义常量变量(标识符)不可使用关键字作名字

标识符字母区分大小写

整型取值范围

short:1*10^4

int:1*10^9

long long:1*10^19

以上为约数

浮点型取值范围

float:7位有效数字

double:15位有效数字

字符型使用规则

1)用单引号将字符括起来

2)单引号中只能有一个字符,不能是字符串

3)其实际上储存的是字符的ASCII码

char name = 'a';

字符串型使用规则

加头文件#include<string>

布尔类型

true为1,false为0

bool a = true;
cout << a;

输出结果为1 

常用的转义移字符 

"\\":输出\

"\t":水平制表符(一共占8个位置,不满用空格补齐)

主要为了整齐的输入数据

cout << "aa\t123" << endl;
cout << "aaa\t123" << endl;
cout << "aaaa\t123" << endl;

三、数组、函数、指针、结构体补充

1.数组 

 直接输出数组名可以查看数组的首地址

若想具体查看其中某一个具体元素的地址,则在输出的时候前加& (取址符)

2.函数

声明:

函数的声明可以写多次,但定义只有一次

(声明即为函数的第一行)

分文件编写:

值传递:

即在函数调用时实参将数值传入给形参

值传递时,如果形参发生改变,并不会影响实参

比如,在写到交换函数时,会存在这样的错误写法:

#include<iostream>
using namespace std;
void swap(int x, int y)
{int f = x;x = y;y = f;
}
int main()
{int a = 10;int b = 20;swap(a, b);cout << a << ' ' << b;return 0;
}

这时运行结果输出的a,b的值并没有发生交换

原因在于形参只在函数内有用,当实参传递值给形参时,形参只是作为实参的临时拷贝 ,值传递时并没有改变实参。改变值需要传递地址进行调用,使函数内部可以操纵函数外部的变量

如果函数不需要返回值,声明可以写void,且可以不写return

 3.指针

通过指针间接访问内存

int a = 10;
int * p;
p = &a;
*p =1000;

这里输出p为a的地址

在指针前加*代表解引用,找到指针指向的内存中的数据 

空指针:

指针变量指向内存中编号为0的空间

用途:初始化指针变量

空指针指向的内存不可访问(0~255之间的内存编号是系统占用的)

int * p=NULL;
野指针:

 指针变量指向非法的内存空间(一种错误)

空指针和野指针都不是用户申请的空间,不要进行访问

利用指针访问数组中的元素:
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int* p = a;//a就是数组的首地址
cout << *p << endl;//访问第一个元素
p++;//让指针向后偏移四个字节
cout << *p << endl;//访问第二个元素
return 0;
利用指针在函数修改实参的值: 
地址传递:
#include<iostream>
using namespace std;
void swap(int *x, int *y)
{int f = *x;*x = *y;*y = f;
}
int main()
{int a = 10;int b = 20;swap(&a,&b);cout << a << ' ' << b;return 0;
}
const修饰指针:

分三种情况

1)const修饰指针--常量指针

指针的指向可以改,指针指向的值不可以改

const int * p = &a;
 2)const修饰常量--指针常量

指针的指向不可以改,指针指向的值可以改

int * const p = &a;
 3)const既修饰指针,又修饰常量

指针的指向,指针指向的值都可以改

const int * const p = &a;
以冒泡排序为例三者的结合应用
#include<iostream>
using namespace std;
void Paixu(int*a, int len)
{for (int i = 0; i < len - 1; i++){for (int j = 0; j < len - 1 - i; j++){if (a[j] > a[j + 1]){int f = a[j];a[j] = a[j + 1];a[j + 1] = f;}}}
}
void Prin(int* a, int len)
{for (int i = 0; i < len; i++){cout << a[i];}
}
int main()
{int a[10] = { 4,3,6,9,1,2,10,8,7,5 };int len = sizeof(a) / sizeof(a[0]);Paixu(a, len);Prin(a, len);return 0;
}

4.结构体 

#include<iostream>
using namespace std;struct Student
{string name;int age;double score;
}stu;//stu作为结构体变量

给结构体赋初始值:

int main()
{
//方法一stu.name = "小明";stu.age = 18;stu.score = 99.7;
//方法二struct Student stu[3] ={{ "小七", 19, 100},{ "小可", 23, 90 },{ "小时", 18, 80 }};
//方法三(结构体指针)Student* p = &stu[0];cout << p->age;return 0;
}
结构体嵌套

 赋值时:结构体变量1.结构体变量2

结构体做函数参数

构造函数

//值传递
void printStudent1(struct Student stu)
{//cout<<......
}
//地址传递
void printStudent2(struct Student* p)
{//cout<<......
}

 传递

//值传递
printStudent1(stu);
//地址传递
printStudent2(&stu);

结构体const使用场景 

在使用函数对结构体进行地址传递时,在函数中误改结构体中的值会影响到实参本身,当在函数中对传递的指针使用const,则使函数无法影响实参。

void printStudent(const Student *stu)
{//cout<<....
}

四、C++语句及函数 

三目运算符

格式:表达式1?表达式2:表达式3

如果表达式1成立,则执行表达式2;不成立则执行表达式3 

其返回的变量可以继续赋值

 switch语句

执行多条件分支语句

格式:switch(表达式)

          {

                case  结果1:执行语句;break;

                 ………………

                default:执行语句;break;(前面的都不符合)

          }

goto语句

无条件跳转语句

格式:goto 标记

即如果标记名称存在,在执行到goto语句时,会跳转到标记的位置

system("pause")的使用

1)通常用于在命令行窗口中暂停程序的执行,等待用户按下任意键继续

2)目的在于在程序执行完毕后保持命令行窗口打开,以便用户能够查看程序的输出结果

sizeof()的使用

显示数据类型占用内存的大小(字节)

括号里放数据类型或变量

常用于求数组中元素的个数

int num[5] = { 1,2,3,4,5 };
int a = sizeof(num);
int b = sizeof(num[0]);
int sum = sizeof(num) / sizeof(num[0]);

stoi( )函数

Ⅰ.在头文件#include<string>中

Ⅱ.其作用将数字字符串转化为int输出(可自动去除前导0)

Ⅲ.存在范围限制(int)

http://www.lryc.cn/news/379618.html

相关文章:

  • k8s volcano + deepspeed多机训练 + RDMA ROCE+ 用户权限安全方案【建议收藏】
  • 设计模式(七)创建者模式之建造者模式
  • # class中的__call__方法解析
  • React逻辑复用的方式都有哪些
  • 【LinuxC语言】线程重入
  • 【Streamlit学习笔记】Streamlit-ECharts箱型图添加均值和最值label
  • Docker镜像仓库:存储与分发Docker镜像的中央仓库
  • FreeRTOS必考面试题及参考答案
  • 面试题2:从浏览器输入一个URL,到最终展示前端页面这一过程,会发生什么?
  • <Rust><iced><resvg>基于rust使用iced构建GUI实例:使用resvg库实现svg转png
  • 面试突击:Java 中的泛型
  • 3_2、MFC常用控件用法:组合框、滚动条和图片控件
  • 如何使用gprof对程序进行性能分析
  • 四川汇聚荣科技有限公司靠谱吗?
  • 可灵王炸更新,图生视频、视频续写,最长可达3分钟!Runway 不香了 ...
  • oracle中使用临时表GLOBAL TEMPORARY TABLE
  • Gradio入门—快速开始
  • AOP应用之系统操作日志
  • 海外云手机自动化管理,高效省力解决方案
  • 后仿真中的 《specify/endspecify block》之(5)使用specify进行时序仿真
  • win10/11磁盘管理
  • 【昇思初学入门】第四天打卡
  • 禁用/屏蔽 Chrome 默认快捷键
  • 移动端+PC端应用模式的智慧城管综合执法办案平台源码,案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析
  • AI音乐大模型时代:版权归属与创意产业的新生长点
  • C++函数作为参数
  • 考前刷题练手感(北航期末往年数据结构编程题)
  • Android记录9--实现转盘效果
  • 【Oracle APEX开发小技巧1】转换类型实现显示小数点前的 0 以 及常见类型转换
  • GRIT论文阅读笔记