C语言

1. 指针的用法

`int *pa;`//指针类型:int* 定义一个指针,指针只能指向一个地址(即指针所占的内存值为一个地址)

指针是一种保存变量地址的变量
pa = &a;//指针变量pa的值为&a(即为一个地址值,此时开辟的这个内存存的值为a的地址)
*pa =200;//用*号来给地址赋值,即地址指向的内存即a的值为200

`*` 为间接寻址或间接引用运算符,用于指针式将访问指针所指向的对象
指向void类型的指针可以存放指向任何类型的指针,但不能间接引用自身

`pa= &a[0] x= *pa 则 *(pa+i)= a[i] `因为数组名代表的就是数组最开始元素地址故`pa = &a[0] `也可写为` pa = a; *(a+i) 则 &a【i】 与a+i 含义相同 则pa【i】与*(pa+i)`是等价的 但是pa是指针也是个变量 `pa=a pa++`是合法的 但a不是变量` a=pa a++ `是不合法的
pa++ 一次加的为其类型所占的字节长度 而非一次加一个字节

![](media/14876675609253/14876685425266.jpg)

2. 函数重载、重写、隐藏

重载:指两个函数的函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同

重写(override):发生于父类和子类之间,指的是子类不想继承使用父类的方法,通过重写同一个函数的实现实现对父类中同一个函数的覆盖,因此又叫函数覆盖。

隐藏:重载和重写区分开后,隐藏又有可能会跟前两者混在一起。当然OC中也没有隐藏,典型的C++中有,通过虚函数和父子类之间的函数重载进行区分,其中重载和重写是针对函数的,而隐藏除了函数还会针对成员变量。隐藏发生在父类和子类之间,隐藏指的是父类的同名函数或变量在子类中隐藏,其中只要函数同名就隐藏,不管参数相同与否。在子类中父类的同名函数或变量不可见,但在父类中依然存在。