c 指针和引用
引用数组
int ar[10] ={0};
int (&b)[10] = ar;
声明引用必须在定义时初始化 没有空引用
引用不分等级 没有2/-/4级别引用
引用和指针的区别
三种形参
传值操作 void (int a) 改变x a不变 形参改变实参不变(传值设计)
void fun(int a) void fun(int &a) viod fun(int *p)
{
a+=10;
}
int main()
{
int x = 0;
fun(x) fun(x) fun(&x)
}
void fun(int *a) 传地址 通过指向 用形参改变实参
void fun(int *a) 别名 改变实参
void fun(int *p)
{
*p +=100;
int a =10;
p = &a; //之改变了p的指向 和传递的s的指向无关 新建的指针
}
int main()
{
int x = 10 , y = 20;
int *s = &x;
fun(s);
printf("%d %d",*s,x);
return 0;
}
大块内存用指针
单个值用引用和传值
形参的设计方案和是否需要改变值有关系
形参设计方案
指针和引用的区别
对单个变量改变最好使用引用
对群体变量最好设置成指针
引用不能为空 更安全
类型不同 包括长度不同()
指向数组的指针和数组指针
数组名的三个例外
1.数组名做长度
sizeof(ar) 只关心大小 等于长度
2.取数组地址
指针指向数组地址 数组地址= 大小加类型
int *p[10] 数组 是个空间 每个空间放指针 时指向int的指针 p标识符 数组名 放的整形类型的地址 存放地址
int (*s)[10] 指针 指向数组 十个空间 每个空间放的整形 s标识符 s开辟四个地址 存放变量
3.数组初始化一个引用
数组名=大小加类型
int ar[10] ={0};
int (&b)[10] = ar;
剩下都是首地址