C++ PRIMERPLUS chapter7
void a(int b,int c) 必须分开 不能Int b,c;
原型中变量名可以省略 void a (int,float) 不过两个参数类型相同的时候最好加上
数组名通常代表地址 然而有一些例外 如 声明时数组名标记存储位置 对数组名用sizeof得到整个数组长度 &用于数组名得到整个数组地址
函数头和函数原型中 int *arr 和 int arr[]等价 都把arr当成指向int的指针
sizeof cookies 是整个数组的长度 传递给arr 后 sizeof arr只是指针的长度 所以必须显示传递数组长度 指针本身没有数组长度
int age = 39
const int * pt = &age 不能用pt来修改 const int ; *pt为const 但是 age不是常量
而且 pt的值也是可以修改的 如 pt= &sage 但是int sloth = 1; int * const finger = &sloth; 不能修改finger的值 你也可以 const int * const stick = &trouble stick啥也不能改
const常量能给const指针 但是 const的地址不能给普通指针
const float g_moon = 1.63
float *pm = &g_moon;
同理 二层const指针 为 一层常态指针 然后指向一个const常量
如 const int ** pp2;
int *p1;
const int n = 13;
pp2 = & p1; //假设能行
*pp2 = &n;//pp2的解指向 n的地址 因为都是const 所以通过
*p1 = 1; //则可以用1来改const
int ar2 [r][c]==*(*ar2 + r)+c) ar2为c个int组成的数组 他是元素0个
while(n-->0) 最后循环先作为1检测 然后自减 变为0
cmath中atan2可以根据xy计算角度
cin >>a>>b; 在表达式中 cin返回一个被转化为bool的值 如int a b 输入q 返回为false
在递归内调用两次自身 复杂度将指数级上涨 然而层次较少这种方法就挺精致
函数指针
think()是一个函数
process(think) //传递函数think的地址
thought(think()) //传递函数的返回值
声明函数指针
double pam(int) //函数原型
double (*pt) (int) //函数指针 pt=pam;
可以先声明原型 在用(*XX)代替原来的pam (*pt) (int)是一个指向函数的指针
double *pt(int)是一个返回指针的函数
然而pt(5)和(*pt)(5)都可以调用pam 这是一种折中的操作 //函数名和 对函数地址的解引用
基本类型不用const 如int 传递值使用副本
按值传递 glitz 按地址 &glitz

浙公网安备 33010602011771号