C++学习心得(1)

一、不借助临时变量实现a,b互换

a=a+b;
b=a-b;
a=a-b;

上述代码第一句存在溢出风险。

a=a^b;
b=b^a;
a=a^b;

通过位运算实现a,b互换最佳。一次异或让对应相同二进制位输出0,不同二进制位输出1,则三次异或可以交换a,b的值。

二、 头文件里尖括号<>和双引号“”的区别
尖括号<>表明这个文件是一个工程或者标准头文件,查找首先检查预定义目录。
双引号“”表明是用户提供的头文件,查找优先从当前文件目录中寻找,然后在标准位置寻找文件。
由此我们可以看出双引号头文件查找区间大于等于尖括号头文件查找区间。

三、C++main函数执行后还执行什么
函数退出时需要释放资源,例如main()函数运行结束后,用exit()结束程序,用户用Ctrl+C来发信号终止程序等。
因此,需要一种与程序退出方式无关的方法来进行程序退出的处理,用atexit()函数来注册程序终止时要被调用的函数。
atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。函数原型如下:

int atexit(void(*)(void));

一个程序最多可以用atexit()注册32个函数,这些函数调用顺序与注册的顺序相反,即最先注册的最后调用,最后注册的最先调用。

四、C++域操作符
main()函数里局部变量引用优先,但是可以通过域操作符“::”直接操作全局变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值