C++简介

C++对象的大小
有一个特殊的运算符 sizeof(),它返回存储某个表达式所要求的内存单元数(以 char 类型的大小为单位)。在大多系统中,一个 char 类型值只需要一个 8 位的字节保存。与大多数函数不同的是,sizeof() 运算符的实参可以是值表达式,也可以是类型表达式。
如果变量是基本类型,则必须初始化它。启动程序时,未初始化的基本类型变量具有未定义的值。
main与命令行参数
argv 是 argument vector (参数数组)的缩写,它是包含全部命令行字符串的一个数组。
main 函数需要向父进程返回一个 int 值。在 UNIX 系统中,进程的返回值被称为它的“退出状态”(exit status)。父进程可以使用退出状态来决定下一步做什么。如果一切正常,则返回值一个为 0 ;如果执行过程中出现错误,则应返回一个非0的错误码。
为了强化可移植性,C++ 程序应该遵循 C++ 标准
return EXIT_SUCCESSreturn EXIT_FAILURE

算术运算符

C++ 中提供了几种快捷运算符,它将每一个基本运算符与赋值运算符(=)结合在一起。例如:+=,-=
加减 C++ 还提供了一元增 1 运算符(++)和一元减 1 运算符(–)。如果将这种运算符至于变量的左边(前置),则它的运算符会在计算表达式的其余部分之前进行;如果是在变量的右边(后置),则它的运算会在计算表达式的其余部分之后进行。与编译后置运算符时相比,编译前置运算符会比后置运算符产生更短的机器码。
整除将一个 int 类型的数与另一个 int 类型的数相除,其结果是一个 int 类型的商。运算符 / 用于获取整数的商,运算符 % (称为求余运算符)用于获取余数。
混合表达式(任何有效的表达式)所得到的结果类型,通常是参数类型中数值范围最大的那一个。
还有布尔表达式,其结果都返回一个布尔值, false 或 true 。

const 关键字

把某个实体声明为 const 后,编译器会视为可读。
因为不能进行赋值操作, const 对象必须进行适当的初始化。
一般而言,可以将常量“孤立”出来,可以提供程序的可维护性,还可以使用它来替代某些类型的宏。例如:

const int SIZE = 256;
...

int i;
for(i = 0;i < SIZE; ++i) {
    ...
}

使用宏而不是常量,意味着编译器进行的类型检查,将无法达到编译器对适当的 const 表达式所能够进行的类型检查的水平。对定义常量值,C++ 程序更倾向使用 const 表达式而不是宏。

指针与内存访问

一元表达式 & 与 *
对象(在最通常的意义下)就是一片能够容纳数据的内存区域。变量是一个能够被编译器识别,有名称的对象。变量的名称可以当做对象自己进行使用。
每一个对象都有一个内存地址(数据开始的位置)。一元运算符 & 也被成为取地址运算符,当将其用于对象时,返回的是对象的内存地址,被称为指针,指针会指向这个内存地址开始的位置。
在 C 程序中,经常使用 NULL 宏来代替零(0)。它是一个能够被合法地赋予指针的特殊值,经常在初始化时或者删除指针之后将他赋予指针变量,防止下次使用时产生不可预估的问题。Stroustrup(C++之父)建议在 C++ 程序中使用 0 而不是 NULL 宏。
指向简单类型变量的指针与执行大型、复杂对象的指针占用相同的内存空间,其大小通常等于该机器上 sizeof(int)的求值结果。
一元运算符 * 被称为解引用运算符,当应用到非空指针时,它返回指针指向地址处的对象。
运算符 new 和 delete
C++ 具有一种在运行时动态分配内存的机制,这意味着即使程序猿不需事先估计程序的内存需求量,也可以保证他所需求的最大内存量会得到满足。运行时动态分配是帮助程序猿构造高效而灵活程序的强大工具。
new 运算符从堆中分配内存空间,并且返回执行新分配的对象的指针。delete 运算符的作用是释放动态分配的内存并将其返回给堆。delete 操作只能用于new 运算符返回的指针或空指针。不再需要的堆内存应当进行释放,以便再次使用。否则,可能会造成内存泄漏。
对于空指针、被释放(delete)的指针或者未初始化的指针进行解引用操作,会导致运行时错误,传说中的段错误(segmentation fault)。

引用变量

在C++ 中,引用(reference)提供了一种给左值赋予一个别名的机制。对于避免费时或者不必要的复制,引用时非常有用的。引用必须在声明是进行初始化,且其初始化必须作为左值。例如:int n; int& rn = n;int 后面的 & 符号表示rn 是一个 int 类型的引用。引用变量 rn 是实际变量 n 的别名。
当与引用相关时,符号 & 仅仅用在引用的声明中。另外,推荐将符号&紧靠在类型名称右边的位置:Type& ref(initVal);这样看起来比较直观嘛

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值