PoEdu - C提高班 【Po学校】-Lesson08 -指针专题(二):数组指针&指针数组&函数指针- 课堂笔记
1--> 数组指针
1.0.0 数组指针指向的是一个数组类型,其格式为:元素类型 + 数组大小:申明 typedef int(INT10)[10];那么 INT10就是一个数组。
1.0.1 示例:int(*parray)[10] = &array;
2--> 指针数组
2.0 指针数组 里面全部是一根根的指针
3--> 字符串和指针的关系
3.0.1 字符串中几个容易犯错的示例
指针数组的参数传递
指针数组作为参数传递时:
指针数组的类型:
4--> main 函数的详解
5--> 函数的类型
5.0.0 每一个函数都会产生一个函数指针,如下图中pFoo就是Foo()函数的指针
5.0.1 有一个函数指针,那么就一定有一个函数类型与之匹配。
5.0.2 函数类型由几个部分组成: 返回值 + 参数列表 (参数列表中包含: 参数类型,参数个数,参数顺序)
5.0.3 上图中函数的类型是 int(*pFoo)(int,int) = Foo;
5.0.4 再看一个函数的类型
5.0.5 上图中,Foo与下一行中的&Foo2是一样的。
5.0.6 另外一种用typedef申明和定义函数类型的方法:
5.0.7 为什么要使用函数类型,要如此定义呢,是为了实现“回调函数”。以后在windows编程中,会大量的使用回调函数。
5.0.8 函数的指针,就是指向函数类型的指针。
6--> 复习小节
7--> 作业
//float Foo(int num, float num); //指针类型
// 答:指针类型为 float (*)(int,int) 如示例 float (*pFoo)(int,int)= Foo;
//
//int (*parray)[10] //数组原型
// 答:数组原型为 int array[10]= {0};
//
//char*(*parray)[10] //数组原型
// 答:char *array[10] = {"I","love","Mark"};
//
//int array[10][20] //数组类型
// 答:数组类型为 int (name)[10][20]
//
//char *array[10] //数组类型
// 答:数组类型为 char *(name)[10]
//
//void Foo(void) //指针类型
// 答:指针类型为 void(*Foo)()
//
//int*(Foo)() //函数原型
// 答:函数原型为 int* Foo();
//
//void*(Foo)(int*,void*) //函数原型
// 答:函数原形为 void* Foo(int* num, void* v);