目录
一、软件使用
二、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)