1. 参数(argument) --> 实参
参量(parameter) --> 形参
2. A[] 同样传递的是地址,可对原数组修改
传递数组地址时,目标函数无法通过 sizeof (arrayName) 量长
必须把长度一并传去 (或使用首尾地址法,传递首地址和尾地址的指针)
3. 可以用关键字 const 保护数组
const 和指针:
两种使用方式
a. 让指针指向一个常量对象,防止使用该指针修改所指向的值
例如 const int *pt = &age;
注意 const 变量的地址必须传给指向 const 的指针
例如 const float A = 0.1;
const float *pa = &A; -->valid
float *pb = &A; -->invalid
在一级间接关系时可以将 非 const 指针的地址赋给 const 指针
但再深不行
int *p1 = &ans;
const int *pp2 = p1;
b.将指针本身声明为常量,防止改变指针指向的位置
例如 int * const p = &age; 那么 p 所指向地址无法修改
4. 数组指针 和 指针数组
int (*ar)[4] 等价于 ar[][4] 表示指向4个int组成的数组的指针
若对二维数组首地址声明为指针 (*ar)[x] ( 或ar[][x] )
那么对于二维数组元素的指针表达 ar[y][x] = *((*ar+y)+x)
5. 对结构体处理的函数
三种传递方式 : 按值传递、传递结构的地址、引用
按值传递是对副本的操作,使用 . 号成员访问法
地址传递使用成员的指针访问 ->
6. 函数与string对象
string 对象可以直接按值传递
string 的数组声明 :
string List[Size]
整行读取方法 getline(cin,List[i])
函数传递 string sa[]
7. 函数与array对象
例如 :
std::array<double, 4> expenses;
对于函数 void Show(std::array<double ,4> da); 按值传递 Show(expenses)
对于函数 void Fill(std::array<double ,4> *pa); 传递地址 Fill(&expenses)
要注意的是对于array对象可以使用坐标读取法 (*pa)[i]
--------------pa是指针,*pa是array首地址,(*pa)[i] 便为实际空间
8. 函数指针
函数的指针是存储其机器代码的内存的开始地址(就是函数名本身)[C++ P笔记中会补充这一知识点,暂且跳过]