指针总结&字符串

1.常量指针:

例如: int const *a ;
const int *a ;

指针常量:
int * const a;

从左到右const先靠近谁, 就读谁: int const *a ; int是常量 所以读作常量指针
比如int * const a; *更靠近const 所以读作 指针常量

2.常量指针和指针常量 的区别:
常量指针修饰的是 int ,所以常量不能变,但可以通过指针指向修改值;
指针常量修饰的是* ,所以指针指向不能修改,但是指向的内容可以修改。

说道指针常量和常量指针,又想叨叨 指针数组和数组指针了......

3.指针数组和数组指针

指针数组:int *aar [5] ={1,2,3,4,5};
数组指针:int (*aar)[5]={1,2,3,4,5};

主要看修饰的数组还是指针,比如aar[5] 中括号的优先级高于号,所以修饰的是数组,
将数组放后面,指针放前面;所以读作指针数组

比如(*aar)[5] 括号的优先级高于中括号的优先级,所以修饰的是指针,
将指针放后面,数组放前面;所以读作数组指针

image.png

结合上图

可以知道数组指针,和指针数组的步长 即 p++,移动的字节数。
int *aar [5] ={1,2,3,4,5};
aar++;
因为aar指向的是指针,所以步长为8字节

int (aar)[5]={1,2,3,4,5};
数组指针指向的是int ,所以 aar++,步长应为 4
5 =20


结构体

你可能感兴趣的:(指针总结&字符串)