2022.10.27-C++学习笔记
part2 : 函数
8、常用的系统函数
了解,一般用不到
double sqrt(double x); 求x的平方根
int abs(int x); 求x的绝对值
double fabs(double x); 求x的绝对值
9、专题:递归
要想理解递归需要先懂栈
参见数据结构课程中的递归讲解
10、变量的作用域和存储方式
按作用域分:
全局变量
在所有函数外部定义的变量叫全局变量
全局变量使用范围:从定义位置开始到整个程序结束局部变量
在一个函数内部定义的或者是函数的形参 都统称为局部变量
void f(int i){
int j = 20;
}
i和j都属于局部变量
局部变量使用范围:只能在本函数内部使用注意的问题:
全局变量和局部变量命名冲突的问题:
在一个函数内部如果定义的局部变量的名字和全局变量的名字一样时,局部变量会屏蔽掉全局变量。按变量的存储方式
静态变量
自动变量
寄存器变量
part3 : 指针
1、简单介绍
指针就是地址,地址就是指针(指针只是一个值,是内存单元的编号)
地址就是内存单元的编号
(编码是规定哪一个字符用哪一个数字表示,编号是从0开始的一个数字)
指针变量是存放地址的变量
指针和指针变量是两个不同的概念
注意: 通常会把指针变量简称为指针,实际上两者含义不一样
#include <stdio.h>
int main(){
//p是指针变量,能存放其他变量地址
//int * 是一个数据类型,p是变量的名字
int * p;//p是变量的名字,int *表示p变量存放的是int类型数据的地址
int i = 3;//i是普通变量
int j;
//p = i; error,因为类型不一样,p只能存放int类型变量的地址,不能存放int类型变量的值
//p = 55; error,原因同上
p = &i;//&i表示取i的地址
/*
1、p保存了i的地址,因为p指向i
2、p不是i,i也不是p,更准确的说:修改p的值不影响i的值,修改i的值也不影响p的值
3、如果一个指针变量指向了某个普通变量
*指针变量 就完全等同于 普通变量
例子:
如果p是个指针变量,并且p存放了普通变量i的地址,则p指向了普通变量i
*p 就完全等同于 i
或者说:在所有出现*p的地方都可以替换成i
在所有出现i的地方都可以替换成*p
*p 就是以p的内容为地址的变量(p的内容就是i的地址)
*/
j = *p;//等价于 j = i;
return 0;
}