读陈黎娟的《C、C++实践进阶之道,写给程序员的编程书》--关于字符和字符串、函数

关于字符和字符串:

  1. c中只有字符数组来存储字符串,需要先声明长度;c++中通过string类型来定义字符串。
  2. c++中string类型的字符串以'\0'来结尾,计算长度用strlen时不包含结尾的字符,用sizeof()函数时包含结尾字符 ---错误      更改为   计算字符串长度有 string的成员变量  size、length、capacity,表示当前字符串的包含的元素个数,不包含结尾的\0,sizeof()函数来计算一个数据类型的大小 比如char 占用 1个字符,string占用8个字符  int占用4个字符(在32位操作系统)
  3. 对c++使用memcpy、memset、memcmp函数时注意操作对象要为POD,即c风格的struct;

c++中函数参数传递的3种方式:

  1. 值传递。分三步
  • 在堆栈上创建临时对象(如果对象为类类型,会调用类的构造函数)
  • 函数执行,操作临时对象
  • 函数结束,释放掉临时对象(如果临时对象为类类型,会调用析构函数)
  1. 引用传递,即使形参是类类型,也不会调用构造和析构函数。分三步
  • 在堆栈上创建引用形参,普通形参副本和局部变量
  • 函数执行
  • 函数退出,释放副本和局部变量
  1. 指针传递,创建的形参是指针,所以也不会调用构造函数和析构函数。
  • 在堆栈上创建指针形参,普通形参副本和局部变量
  • 函数执行
  • 函数退出,释放副本和局部变量

三种方式中,值传递的执行效率和安全性高点。但对于函数形参的为较大的类数组时,则构造和析构的次数就较大了。

c++中的宏引入原因:函数调用前要保存当前函数执行的现场(即上下文环境),函数执行结束又要恢复执行前的现场,这样会有一定的时间和空间上的开销。而宏只在预处理时把宏代码展开,不需要保存现场和恢复现场。

宏不能访问对象的私有成员;且宏容易引起二义性。

函数圈复杂度:统计一个函数有多少个分支(if,while,for等)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值