1.指针是什么?
书面语的指针是地址。可以这样理解,将计算机的内存空间当作一家酒店,每个内存单元(1byte)就是一个房间,将每个房间编号,这个号码可以看作是房间的地址,也可以当作是房间的指针。
口头语的指针是指针变量,用来存储地址。
2.指针类型的意义是什么?
a.根据指针类型,解引用操作的时候决定访问多大的内存空间
b.+1/-1操作中,根据指针类型,决定跳过几个字节的内存空间
3.指针的运算
a.指针-指针等于两指针间所包含的元素的个数,如
2.+-整数:是指指针根据指针类型,跳过几个字节的内存空间到达的地址
比如 char *p1=0x0012ff40
char *p2=p1+1;
p2=0x0012ff41;
int *p1=0x0012ff40
int *p2=p1+1;
p2=0x0012ff44;
3.指针的关系运算:大于、小于、等于、大于等于、小于等于、不等于
对于指针而言,等于、不等于关乎二者所指向的内容是否在一块空间内
对于指针而言,大于、小于等关系是关乎二者指针的大小,就是地址值的大小,地址值小的在存储器的位置比较靠前,地址值大的在存储器的位置比较靠后
4.数组名是什么?
数组名,大多数情况下是指数组首元素地址,但是也有两个例外,在这两个例外中数组名代表的是整个数组:
a.sizeof(数组名)
b.&数组名
5.指针数组、数组指针
指针数组:本质是数组 例:int* arr[10]
数组指针:本质是指针 例:int (*p) [10] (解读:*指向,代表指针;int [10]代表一组十个整型元素的数组;整体意思就是数组指针p指向一组十个整型元素的数组)
6.函数指针、函数指针数组
函数指针:本质是指针 例:表示指向 int Add(int x,int y)的指针可以表示为 int(*pf)(int,int)
函数指针数组:本质是数组 例: int(*pfArr[4])(int,int)
解读:将例子中的函数指针在理解的过程中,可以解分为int(*)(int,int) pfArr[4](注意:这样的写法是错误的!)
在函数指针含义的基础上,int(*)(int,int)这样的形式,至少是指某函数指针变量指向一个返回值为int型,两个参数均为int型的函数,其写在前可以表明为函数指针类型的数组,也就是函数指针数组