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])();  这里一定要从内到外进行分析。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值