【C】C的typedef的妙用
1.自定义数组类型
1 |
|
Array
是一个类型为int
长度为5的数组类型,即定义一个Array a;
那么a就是一个类型为int长度为5的数组,所以a的使用方法和数组一致。
1 |
|
2.自定义指向数组的指针类型
1 |
|
Arrayptr
是一个指向char
类型的长度为8的数组的指针类型,此类型的指针只能指向char
类型的长度为8的数组。且每一次指针移步,移动的距离是1*8=8字节。
需要注意的是()
不能省略,否则定义就会变义。
除了自定义指针类型来指向一个固定的数组外,C还可以直接定义一个指向固定数组的指针变量。
1 |
|
p
就是一个指向类型为整型且长度为5的数组的指针变量。
3.自定义函数类型
1 |
|
Funptr
是一个指向返回值为int
参数列表为int,int
的函数的类型,通过Funptr
函数类型的指针可以将返回值为int
参数列表为int,int
的函数当作参数来使用,使函数的调用更为灵活。
除了定义函数类型可以达到这种效果,我们还可以直接定义指向函数的指针类型来实现函数参数化,如:
1 |
|
这样的效果和定义函数类型是一样的。
当然我们还可以直接定义一个指向函数的指针变量,来实现同样的效果,如:
1 |
|
我们还可以这么做,一样能达到相同的效果:
1 |
|
搞了那么多似乎函数指针只是把函数的调用弄得更复杂了而已,除了把函数当作参数来使用似乎没有什么作用了,真的是如此吗?
如果我们仔细观察,会发现函数指针将函数的调用和函数的实现分隔开来了,即函数指针提前规定好了函数的实现标准,这样只要后来者按照这个标准来实现函数,可以不用修改前人的代码,就能实现函数的完美的调用,这一作用在具体的项目迭代中是及其出众的。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!