自己C++除了跟着老师学之外主要是看的b站,黑马程序员C++视频。这次复习主要是看的课程的文字内容进行复习,然后顺便整理了一下其中的问题。大一新生再加之自己菜鸡一枚,所以学的不怎么深入,只是浅层的学习。一个文章记录一下基础学习中遇到的问题。
https://blog.csdn.net/ClaireSy/article/details/108422945
部分内容直接复制的这个,自己目前看了基础入门和核心编程中的前半部分。
1、#define 宏常量: #define 常量名 常量值
结尾不要加分号,否则会报错
define方法和const方法中,此语句写在main函数内外均可。
2、short long 直接就是数据类型 ,不需要再加int。short==short int
3、char ch = ‘a’;
字符型变量,单引号,单引号里面只能有一个字母。
若打成双引号,报错。
若打了多个字母,最后一个字母为所存储的。
字符串的话应该用string,用之前需要include string。或者用char a[]=“hello world”
4、switch语句
int main() {
//请给电影评分
//10 ~ 9 经典
// 8 ~ 7 非常好
// 6 ~ 5 一般
// 5分以下 烂片
int score = 0;
cout << "请给电影打分" << endl;
cin >> score;
switch (score)
{
case 10:
case 9:
cout << "经典" << endl;
break;
case 8:
cout << "非常好" << endl;
break;
case 7:
case 6:
cout << "一般" << endl;
break;
default:
cout << "烂片" << endl;
break;
}
system("pause");
return 0;
}
此段代码中,10、9均会输出经典。输入9后,直接执行9之后的语句。输入10后,执行为空。则执行下一句,,并跳出。
使用switch应记得break,否则将每个都执行一次。
2021.3.31凌晨,补充----switch default语句。
#include<iostream>
using namespace std;
int main()
{
int a;
cin >> a;
switch (a)
{
case 1:
cout << "1" << endl;
break;
case 2:
cout << "2" << endl;
break;
default:
cout << "00" << endl; //只要输入的不是1或者2,就都执行这句。
break;
}
return 0;
}
如图,default也相当于一种case,就是输入的数字不满足任何上述情况时所执行的。理解为if语句中的else。
5、goto语句
跳出嵌套循环,break只能跳出一次。
goto FLAG;
FLAG:
{
xxxx
}
后面需要加引号
大括号加不加都不报错,此处依旧存疑,百度没有找到答案,自己理解下路感觉没什么区别。期待大佬解答
6、一维数组数组名
数组名地址就是a[0]的地址。
可以利用size of相除,求出来数组长度。
//1、可以获取整个数组占用内存空间大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
cout << "整个数组所占内存空间为: " << sizeof(arr) << endl;
cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl;
cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;
直接输出数组名,得到的是数组首个元素的地址。
输出后续元素的地址,需要用&取址。
cout << "数组中第二个元素地址为: " << (int)&arr[1] << endl;
7、值传递
void swap(int num1, int num2)
{
cout << "交换前:" << endl;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
int temp = num1;
num1 = num2;
num2 = temp;
cout << "交换后:" << endl;
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
//return ; 当函数声明时候,不需要返回值,可以不写return
}
int main() {
int a = 10;
int b = 20;
swap(a, b);
cout << "main中的 a = " << a << endl;
cout << "main中的 b = " << b << endl;
system("pause");
return 0;
}
此函数中,改变的是形参而不是实参数。所以main函数中的a b并没有发生交换。如果想达到交换的目的,则需要在函数中加上&。将void swap(int num1, int num2)
改为void swap(int &num1, int &num2)
8、所有指针类型在32位操作系统下是4个字节
9、const修饰指针
int main() {
int a = 10;
int b = 10;
//const修饰的是指针,指针指向可以改,指针指向的值不可以更改
const int * p1 = &a;
p1 = &b; //正确
//*p1 = 100; 报错
//const修饰的是常量,指针指向不可以改,指针指向的值可以更改
int * const p2 = &a;
//p2 = &b; //错误
*p2 = 100; //正确
//const既修饰指针又修饰常量
const int * const p3 = &a;
//p3 = &b; //错误
//*p3 = 100; //错误
system("pause");
return 0;
}
10、利用指针访问数组
int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int * p = arr; //指向数组的指针
cout << "第一个元素: " << arr[0] << endl;
cout << "指针访问第一个元素: " << *p << endl;
for (int i = 0; i < 10; i++)
{
//利用指针遍历数组
cout << *p << endl; //p的话存储着地址,一个的大小是4,所以加1就是移动4个字节,就可以p++实现数组的遍历
p++;
}
system("pause");
return 0;
}
11、函数地址传递
//地址传递
void swap2(int * p1, int *p2)
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
swap2(&a, &b); //地址传递会改变实参
12、引用做函数参数
//3. 引用传递
void mySwap03(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
作用同地址传递,但是用起来更简单。
13、函数默认参数
int func2(int a = 10, int b = 10);
int func2(int a, int b) {
return a + b;
}
在定义函数时候就可以将参数赋值。
14、函数重载
指多个函数,函数名相同,但根据传入数据的不同,执行不同的代码。
//函数重载需要函数都在同一个作用域下
void func()
{
cout << "func 的调用!" << endl;
}
void func(int a)
{
cout << "func (int a) 的调用!" << endl;
}
void func(double a)
{
cout << "func (double a)的调用!" << endl;
}
void func(int a ,double b)
{
cout << "func (int a ,double b) 的调用!" << endl;
}
void func(double a ,int b)
{
cout << "func (double a ,int b)的调用!" << endl;
}
//函数返回值不可以作为函数重载条件
//int func(double a, int b)
//{
// cout << "func (double a ,int b)的调用!" << endl;
//}