一,指针认识
指针是c语言中最常用的知识,指针是指向地址的的一个标志。
1,地址
在写代码时,设置某个变量时,系统会为其分配一个“房间”,就是地址,如图,一个一个连一起是不同对象的地址。地址在内存中连续存放。
2,指针用法,指针对象一般用基本类型家*号类型
假若
int *p = a;
这里的a就是int类型的,由于指针指向的是地址,所以a要用表示地址的量,比如数组名,数组名就是数组首地址。
3多重指针,
这里的b类型是int*,c是int**类型,以此类推。
int **p = b;
int ***ps = c;
二,指针含义
像以上a对应的p是仅仅指向a的地址,更改a的数值不会影响p,更改p不会影响a的值,
b对应的p是指向b的地址,b是指向地址的指针,没错指针变量p有地址。
c同理。
三,用法
1,一般如图用就行,要求是等号右边不能是常量,常量无地址。
2,一般需要更改地址的时候,实参传只要一个*的一级指针,涉及修改地址的传用**二级指针。*指针变量是解引用,是获取指针指向变量的值
四,const修饰指针
const修饰的指针变量如果在*前,修饰指针指向的内容,相反则修饰指针变量。
五,指针的加减法
1,指针-+数字
由于地址在内存中连续存放,所以指针加减时会跳过同等数目的地址,一般用于用*(p+i)打印数组。
int arr【7】 = {1,2,3,4,5,6,7};
int *p = arr;
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < 7; i++)
{
printf("%d ", *(p + i));
}
2,指针减指针
一般结果为指针间的其他地址的总数量。
六,野指针
成因:指针未初始化,指针越界访问,指向空间被释放.所以使用指针前一定要初始化.