指针是什么
内存-->内存的单元(1byte)-->编号-->地址-->指针
所以指针就是一个地址而已
口头上说的指针一般指:指针变量
指针变量就是一个变量而已,就是一块内存空间,指针变量用来存放地址
指针变量大小——4/8
指针类型的意义
1.+1/-1的操作,跳过几个字节
2.解引用操作的时候的权限
指针的运算
1.+-整数
2.指针-指针
3.指针的关系运算
指针数组
指针数组:本质上就是数组,数组中存放的是指针(地址)
int* pa;
int* pb;
int* pc;
int* arr[3]={pa,pb,pc};
数组名是什么
数组名:
1.数组名在大部分情况下表示:数组首元素的地址
但是又2个例外,下面两个数组名表示整个数组
a)sizeof(数组名)
b) &数组名
2. &数组名 取出的是数组的地址
int arr[10]={1,2,3};
parr = &arr;
数组指针
int(*parr)[10] = &arr;
int a = 0;
pa是整型指针
int* pa = &a;
char ch = 'w';
pc字符指针
char* pc = &ch;
数组指针
数组指针:指向数组的指针就是数组指针
int arr[10]={1,2,3};
int(*parr)[10] = &arr;
函数指针
函数指针也是有地址的
int Add(int x, int y)
{
return x+y;
}
int main()
{
//printf("%p\n", &Add);
int (*pf)(int ,int) = &Add;
//函数的地址存放到函数指针变量中
int sum = (*pf)(2, 3);
int sum = pf(2, 3);
int sum = Add(2, 3);
printf("%d\n),sum);
return 0;
}
函数指针数组
函数指针数组:存放函数指针的数组
int(*pfArr[4])(int, int);
pfArr数组的每个元素的类型是:int(*)(int, int);
函数指针实现回调函数
回调函数
通过函数指针调用的函数就是回调函数
qsort:使用冒泡排序的思想,模拟实现了一下qsort