第二天 - 变量和指针 笔记

变量中的内容

注意无符号变量与有符号变量的相减
例如:

unsigned u = 10;
int i = -42;
std::cout<< u + i <<std::endl;  //输出结果4294967264

原因:无符号变量与有符号变量做运算时,会先把有符号变量转换成无符号变量,再做运算。

负数是以补码的形式保存的

42转换成无符号变量的过程:

  1. 先看作42转换成二进制:101010
  2. 以32位为例,将其取反1111 1111 1111 1111 1111 1111 1101 0101
    注意:第一位是符号位,1表示负,0表示正数
  3. 因为是补码所以还需要加1:得到4294967254

指针的内容

指针中就需要明白指针常量和常量指针的区别。
口诀:看const和*之间的位置,const在指针前为常量指针,const在指针后为指针常量

 int i=5;
 int *const cp = &i;
 *cp=6;
 int j =6;
 //cp=&j;

总结:指针常量,本质为常量,所以可以修改指针指向的内容,但不能修改指针的值。

const int* bp = &i;
//*bp=8;
bp=&j;

总结:常量指针,本质是指针,指向的是一个常量,所以不可以修改指针所指向的内容,但可以修改指针的值。

还有一点要注意:
int &r = 0; //是错误的
const int &r = 0; //是正确的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值