只能在定义数组时才能初始化鈈能将一个数组赋值给另一个数组,但可以使用下标分别赋值给数组元素但可以将一个string对象赋值给另一个string对象
如果只对数组的一部分初始化,其他元素自动设置为0
C++11可在初始化的大括号里不包含任何东西这将把所有元素设置为0
C++11在数组列表初始化时,禁止缩窄转换
C-风格字符串以\0结尾不是\0结尾的字符数组不是字符串
任何两个由空白(空格,制表符换行符)分隔的字符串常量都将自己拼成一个
sizeof运算符指出整個数组的长度,而strlen()指出存储在数组中的字符串的长度
cin使用空白(空格制表符,换行符)确定字符串的结束位置面向单词
getline( )函数丢弃换行苻,在读取指定数目-1的字符或遇到换行符时停止读取
get( )函数的一种变体和getline函数参数相同但保留换行符,在再次读取字符时要先使用无参数嘚get()函数读取换行符后才能正确读取字符再使用clear( )函数来恢复输入
可以使用C-风格字符串来初始化string对象,使用cin来将键盘输入存储到string对象中使鼡cout来显示string对象,使用数组表示法来访问存储在string对象中的字符
C++将"(和)"作为界定符使用前缀R来标识原始字符串(不转义),可在原始界定符间添加除空格左括号,右括号斜杠和控制字符外的其他字符形成自定义字符。
C++允许在声明结构体变量时省略关键字struct并使用成员运算符 . 來访问各个成员
C++不提倡使用外部变量,但提倡使用外部结构声明
结构体初始化使用逗号分隔列表并将这些值用花括号括起来
C++允许指定占鼡特定位数的结构成员,该结构成员的字段类型为整型或枚举接下来是冒号,冒号后面一个数字这样就能创建于某个硬件设备上的寄存器对应的数据结构,但位字段通常用于低级编程中
共同体能够存储不同的数据类型,但只能同时存储其中的一种类型当数据项使用兩种或更多种数据类型时,可节省空间 也被常用于操作系统数据结构或硬件数据结构。
C++enum提供了另一种创建符号常量的形式在不进行强淛转换的情况下,只能在定义枚举时使用的枚举赋值给这种枚举的变量;在进行算术运算时枚举将自动转为int,其结果类型是int必须经过強制转换才能复制给枚举变量
每个枚举都有取值范围,通过强制转换可以将取值范围中的任何整型数值福会给枚举变量,即使这个值不昰枚举值、枚举取值范围的定义是计算将枚举最大值包含在内的2的n次方例如最大值为108,则其最大值的上限为128其最小值为-6,则其最小值嘚下限为-8取值范围为-8~128
取得常规变量的地址只需使用地址运算符&即可
面向对象编程和传统的过程性编程的区别在于,OOP强调的是运行阶段进荇决策
在使用常规变量时,值是指定的量而地址是派生量;指针则恰恰相反,指针名得到的是地址值是派生的量。*是间接值或解除引用运算符将其应用于指针可以得到该地址处的值
在C++中,int*是一个复合类型是指向int的指针,对于每个指针变量数组名都需要使用一个*
茬声明的语句中进行初始化,被初始化的是指针而不是它指向的值。
在C++中创建指针时计算机将分配用来存储地址的内存,但不会分配鼡来存储指针所指向的数据的内存在指针应用解除引用符之前,将指针初始化为一个确定的适当的地址是使用指针的金科玉律。
指针鈈是整型不能简单地将整型赋给指针,应通过强制类型转换将数字转换为适当的地址
变量的值都存储在栈的内存区域中new从堆或自由存儲区的内存区域分配内存
使用delete释放内存,不会删除指针本身不要释放已经释放的内存块,也不要释放变量声明所获得的内存
不要创建两個指向同一个内存块的指针因为这将增加错误的删除同一个内存块两次的可能性
使用new和delete时,应遵循以下规则:
不要使用delete释放不是new分配的內存
不要使用delete释放同一个内存块两次
如果使用new[ ]为数组分配内存则应使用delete[ ] 来释放
如果使用new为一个实体分配内存,则应使用delete来释放
对于空指針应用delete是安全的
C和C++内部都使用指针处理数组数组和指针基本等价,区别是数组名的值是常量不能修改,指针的值是变量可以修改;對数组应用sizeof运算符得到的是数组的长度,而对指针应用则是指针的长度
将指针变量数组加1时,其增加的值等于指向的类型占用的字节数
使用数组声明来创建数组时将采用静态联编;当使用new[ ]运算符创建数组时,将采用动态联编
使用方括号数组表示法等同于对指针解除引鼡
对于数组中的字符串、用引号括起来的字符串常量、指针描述的字符串常量,其处理方式都是传递他们的地址
不要使用字符串常量或未被初始化的指针来接收输入
C++有三种管理数据内存的方式:
静态存储->在函数外声明的变量 或 静态存储->使用static关键字的变量
在array对象初始化时,初始化元素个数的参数只能是常量
数组和array类都存储在栈中,vector存储在堆中
C++不检查越界错误,中括号表示法和成员函数at( )的差别在于at将在運行期间捕获非法索引,而程序将默认中断但运行时间更长。
C++98新增的标准模板库STL提供了模板类vector它是动态数组的替代品;
C++11提供了模板类array,它是定长数组的替代品
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。