C和指针读书笔记-第13章(高级指针话题)

1.int i;

  int  *pi;

  int  **ppi;

这些声明在内存中创建了变量,如果他们是自动变量,我们无法猜测他们的初始值。

2.如果是静态变量的话,会初始化为0;

3 指针在尚未初始化值之前,不应该执行间接访问操作。

ppi=&pi。这样就可以对ppi进行间接访问了

4.初始化表达式中的&操作符是可选的,因为函数名被使用时总是由编译器把它转换为函数指针。

5.回调函数的参数时把参数的类型声明为void*,表示一个指向未知类型的指针。

6.在使用比较函数中的指针之前,它们必须被强制转换为正确的类型。因为强制类型转换能够躲过一般的类型检查,所以必须确保函数的参数类型是正确的。

7.转移表

首先声明并初始化一个函数指针数组。


double   *oper_func[oper](op1.op2);

oper从数组中选择正确的函数指针,而函数调用操作符将执行这个函数。

8命令行参数

argc用于确定传递了多少个参数。

argv指向数组的第一个元素,这就是它为什么被声明为一个指向字符的指针的指针的原因。

9 字符串常量

当一个字符串常量出现于表达式中,它的值是个指针常量。编译器把这些指定字符的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针。

但是当数组名用于表达式中时,他们的值也是指针常量。

10.。*"xyz" 表示为x

把二进制转化为字符串

putchar(”0123456789ABCDEF“ 【varlue%16】);

11.出现在表达式中的字符串常量的值是一个常量指针,它指向字符串的第一个字符,和数组名一样,你既可以用指针表达式也可以用下标来使用字符串常量。

·12

int   abc()

返回值为int的函数

int abc[3] i

int型数组

int **abc()

返回值为指向int指针的指针的函数               返回值为”int型指针的指针“的函数

int(*abc)();

返回值为int的函数指针    

int(*abc)【6】;

   指向”int型数组“的指针

int  *abc();

返回值”int型指针“的函数

int **(*abc【6】)();  指向返回值为int型指针的指针的函数“的指针的数组。

int  **   bcd();                       的函数   bcd=*abc【6】      指向“返回值为指向int指针的指针”数组的指针。

int**abc【6】;

int型指针的指针数组。


int  *(*abc)【6】;

int向指针的指针数组  指向int型指针数组的指针。

首先      int   *     d【6】           指向指向int型的指针数组的指针。

int      *(*abc())();



int  *(*abc)())[6]


int    *(*(*(*abc)())[6])();  这里一定要从内到外进行分析。


 

你可能感兴趣的:(c语言)