c专家编程第一章

要使指针的赋值合法需要满足:1.两个操作数都是指向有限定符或无限定符的相容类型的指针2.左边的指针所指向的

类型必须具有右边指针所指向类型的全部限定符

翻译过来就是类型相同,并且右边有的限定符左边也要有

char * cp;
const char * ccp;
ccp = cp;


因为,

左操作数是一个指向有const限定符的char的指针

右操作数是一个指向没有限定符的char的指针

char 与char相容,左操作数所指向的类型具有右操作数所指向类型的限定符(无),在加上自身的限定符(const)


而 如果试图使 cp = ccp 便会有编译错误

想一想如果这样都可以,那么便可以通过修改cp的内容来改变常量指针cpp的值得内容了



const char ** 于 char ** 是不相容的(imcompatible)

因为都是没有限定符的指针类型

因为const char * 类型并不是有一个限定符的类型,它是一个具有const限定符的char类型的指针

同样char *也没有限定符的类型,它是一个char类型的指针

cosnt char * 类型并不等同于 char * 类型,所以const char ** 于 char ** 是不相容的(imcompatible)



在一个符号前加上const限定符只是表示这个符号不能被赋值,const并不能把这个变量变成常量



int a[] = {1,2,3,4,5,6,};
#define TOTAL (sizeof(a) / sizeof(a[0]))
int main()
{
    int d = -1;
    if(d <= TOTAL - 1)cout << "-1 <= 5";
    else cout << " -1 > 5 ?1 ";
}

sizeof会返回一个unsigned数,signed int 和 unsigned int比较,会把signed int 转化为 unsigned int -1转化为无符号数将是一个非常大的正整数 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值