一、函數指針和指針函數
(一)指針函數:是函數,函數的返回值是指針
? ? ? ? 1.不能返回局部變量的值
? ? ? ? 2.指針函數返回的地址可以作為下一個函數調用的參數
(二)函數指針:是指針,指針指向一個函數
? ? ? ? int(*fun)(int ?,int )
二、二級指針
? ? ? ? 二級指針是指向一級指針變量的指針
? ? ? ? int ?????**q;(定義一個指針變量q,占8個字節空間,指向一個指針變量空間,即指向一級指針變量的指針)
(一)使用場景
? ? ? ? 1.函數體內部想修改外部指針變量的值時,需要傳指針變量的地址
? ? ? ? 2.指針數組傳參,數組的數組名是指向數組第一個元素的指針,第一個元素是指針,所以數組名為指向指針的指針即二級指針
三、指針數組和數組指針
(一)指針數組:是數組,數組的每個元素是指針
? ? ? ? 1.存放字符串使用字符型數組,操作字符串使用指針
? ? ? ? 2.存放字符串數組使用二維字符串數組,操作字符串數組使用指針數組
(二)數組指針:是指針,指針指向整個數組
? ? ? ? 對一維數組數組名&:值不變,類型升級為指向整個數組的指針。
? ? ? ?對指針數組*:值不變,類型降級為指向數組第一個元素的指針。
????????int? ? ? ? a[5] = {1, 2, 3, 4, 5};
? ? ? ? a == &a[0]
? ? ? ? a == int *??
1.注意:兩種情況不能理解為int*
????????1.1sizeof
? ? ? ? 1.2&:&int*->int**,&a->int(*p)[5]
2.數組指針使用場景:
? ? ? ? 2.1一維數組和指針關系:數組的數組名是指向數組第一個元素的指針常量
? ? ? ? 2.2二維數組和指針的關系:數組的數組名是指向數組第一行元素的數組指針。