##1. 数组和指针的关系
arr == &arr0
代表首元素的地址
但是有两个例外
sizeof(arr) 得到整个数组的总字节数
&arr 取整个数组的地址
注意:arr、&arr0、&arr 它们打印出来的都是同一个地址
arr+1跳过一个元素
&arr+1跳过整个数组
公式:arri==*(arr+i);
##2.数组名会退化
void test (int arr\[\] )
void test ( int *arr )
##3.指针数组和数组指针
看最后两个字区分
int (arr)5; 里面放5个int
int *arr5; 里面放5个int
##4.常量字符串
const char *p="abcdef";
char str\[\]="hello";
前者本质是指针,后者是数组
p存的是a的地址,str存的是hello \ 0
##5.冒泡排序
int sz=sizeof(arr)/sizeof(arr0);
for(i=0;i<sz_1;i++)
{
for(j=0;j<sz-1-i;j++)
{ if(arrj<arrj+1)
{
int tmp=arrj;
arrj=arrj+1;
arrj+1=tmp;
}
}
}
后期用qsort简化
##6.浮点数不可以直接a==b
这样会出现精度缺失
If(fabs(a-b)<1e-7)来判断
1e-7表示10的负7次方
##7.switch
没有break就会一直穿透下去
不管是case还是default
##8.二级指针
int **ppa=&p
存放的是p的地址