学习C专家编程笔记(1)

在C专家编程64页,存在着一个名词的错误,指针常量,和常量指针。内容大致讲解C语言声明中一些比较复杂的问题,具体例子如下:

char  * const * (*next) ();

  1      2    3     4  5 6

这个声明语句有一点复杂,首先我们要明确的一些知识点:1、const在没有括号的情况下,是优先于左边的*相结合的,所以这个声明语句我们可以分析如下:

(*next) 说明next是一个指针;

() 说明这是一个指向函数的指针,该类型的函数不带参数;

char * const * 说明了返回值的类型;

接下来我们分析返回值的类型:首先const与左边的*结合,我们可以由此认为该返回值是一个指针类型,这个指针所指向的数据类型是一个常量,这个常量的类型是 指向char类型的指针 的类型。而书里面所说,书中原文这样描述返回值:    该函数返回另一个指针,该指针指向一个类型为char的常量指针。本人认为这里应该存在错误,应该是指针常量。

故此写下作了个测试:

char * const * a,

 b;

char  * const * ptr = &b;

*ptr = a; //这里会报错,说ptr指向的是read-only的内存。因此本人认为此处乃是常量。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值