C++进阶必备

常识

● 指针常量和常量指针

指针常量:指针变量不容修改;

常量指针:指针指向的内容不容修改;

// 指针常量 - const在后
char* const ptr0 = "0aaa";
	
// 常量指针 - const在前
const char* ptr1 = "1bbb";
char const* ptr2 = "2ccc";

std::cout<<ptr0<<" "<<ptr1<<" "<<ptr2<<std::endl;

PS: 指针常量并不代表指针指向的内容就一定可以修改,如果指向一个常量,那么此时内容也是不容修改的。

● 宏嵌套

有 '#' 或 '##' 的时候,宏嵌套宏并不能有效的展开,此时需要多加一层宏进行转换

#define _TO_STRING(str)   #str
#define TO_STRING(str)    _TO_STRING(str)

#define _INT_SPLICE(x,y)  (x##y)
#define INT_SPLICE(x,y)   _INT_SPLICE(x,y)

算法

● x=x&(x-1)

    其中x是整数,没执行一次,x从低位到高位数,第一个出现的1的位置被清零。

    对次表达式计算,可算出x对于二进制数中出现1的个数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值