C++基础部分(面向过程)自学零碎小点总结
(个人总结,仅供参考,欢迎指出错误!)
(一)C++与C
- C++的输入输出通过“流(stream)”实现,提供了标准输入输出流对象cin、cout。
- C++引入了命名空间来解决命名冲突(如两个同名函数)的问题。
- C++提供了函数重载、函数模板、默认参数。
- C++中的变量定义可以在任意行。
- C++中很重要的一个内容就是引用。
- C++中用 new 和 delete 来分配和释放内存(C中则使用 malloc 和 free )。
(二)变量
-
C++中增加了 long long 类型(超长整型)(long 等同于 long int,short 等同于 short int,long long 等同于 long long int)。
-
在float类型变量赋值时最好在数值末尾加一个 f 。
-
C++中常见数据类型所占字节(32位系统):
常见数据类型 所占字节数 char 1 bool 1 int 4 float 4 double 8 -
C++ 中定义字符串有两种风格:
- C 语言风格:
char 变量名[] = "字符串值";
- C++ 风格:
string 变量名 = "字符串值";
(更为常用)
- C 语言风格:
-
C++中定义常量两种方式:
- 定义宏常量:
#define PAI 3.14
- const 修饰变量:
const int a = 10;
(更为常用)
- 定义宏常量:
(三)运算符与表达式
- 运算符优先级:
- ()控制顺序,优先级最高;
- 单目运算符包括 !、++、–、sizeof()优先级仅次于();
- 算术运算符 > 关系运算符 > 逻辑运算符;
- 只有赋值运算符、三目运算符是从右向左结合性。
- 除法(/)、取模(%)两种运算均要求除数不能为 0 。
(四)选择与循环
- break 与 continue:
- break 可以用于跳出条件语句 switch,也可以用于跳出当前循环语句(若有多层循环,则跳出最近的内层循环),结束当前循环
- continue 用于跳过当前循环体剩下语句,直接进行下一次循环,并不会结束循环
- xxx
(五)数组
- 数组名的作用:
- 统计整个数组在内存中的长度
sizeof(arr) / sizeof(int)
- 获取数组在内存中的首地址
int *p = arr;
- 统计整个数组在内存中的长度
(六)函数
- 值传递时,形参的改变不影响实参;而地址传递和引用传递都会改变实参值(简单来说,还有更复杂情况)。
(七)指针
- *的两种用法
- 定义指针变量:
int *p = &a;
- 解引用操作(即取出指针变量指向的值):
cout << *p <<endl;
- 定义指针变量:
- &的两种用法
- 取地址符:
int *p = &a;
- 引用:
int &a = b;
- 取地址符:
- 使用引用要注意:①必须初始化;(
int &b;
✖)②必须绑定对象(int &b = 10;
✖) - 空指针(NULL)与野指针(指向了未申请的内存空间)都是不可以访问的,编程中要尽量避免。
- 指针变量所占内存大小(32位系统):4 字节
- const 修饰指针(重难点)
- 常量指针:const 修饰指针(简记为 const 在 * 之前),指针的指向可以修改,但指向的值不可以修改。
const int * p = &a;
- 指针常量:const 修饰常量(简记为 const 在 * 之后),指针指向的值可以修改,但指针的指向不可以修改。
int * const p = &a;
- const 同时修饰指针和常量:此时的指针指向和指针指向的值均不可以修改。
const int * const p = &a;
- 常量指针:const 修饰指针(简记为 const 在 * 之前),指针的指向可以修改,但指向的值不可以修改。
- 指针与数组 ——通过指针的偏移来遍历数组:
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++;
}
- 指针与函数:地址传递可以改变实参的值(第二种传值方式)
(八)结构体
- 结构体是用户自定义的一种数据类型,实际上就是多种基本数据类型的集合。
struct Student{
string name; //姓名
int age; //年龄
int score; //分数
};
- struct、class、typedef 的理解——另一篇博客
- 结构体数组
- 结构体数组访问方式:
cout << stuArray[i].name
- 结构体数组访问方式:
struct Student stuArray[3] = { //创建结构体数组并赋值
{"张三",23,100},{"李四",21,98},{"王五",19,97}
};
- 结构体指针
- 结构体指针访问方式:
cout << p->name
- 结构体指针访问方式:
student s = {"张三",23,88};
student * p = &s;
cout << "姓名:" << p->name << endl;
总结
C++基础部分内容实际上与C语言是大差不差的,指针、数组、函数同样是基础中的重中之重。需要注意的是引用是C++新增的内容,在C++中占有很重要的地位,之后会重点学习。