初试C++ 1.0
初学 C++
io 流–输入/输出操作符
标头< iostream >
•endl,输出 ‘\n’ 并冲洗输出流。例如:cout << endl;
•dec, hex, oct,更改用于整数输入/输出的基数(进制)
•left,right, 设置填充字符的布置,即左对齐或右对齐
•fixed,scientific,更改用于浮点 I/O 的格式化
•showpoint,noshowpoint,控制浮点表示是否始终包含小数点
•showpos,noshowpos,控制是否将 + 号与非负数一同使用
标头< iomanip >
• setw(n),更改下个输入/输出域的宽度,宽度为 n
• setprecision(n),更改浮点精度
代码示例
/* iostream-format.cpp */ |
命名空间
C++命名空间提供了一种避免名字冲突的方法
• 在命名空间块内声明的符号被放入一个具名的作用域中,避免这些符号被误认为其他作用域中的同名符号。
• 多个命名空间块的名字可以相同,这些块中的所有声明在该具名作用域声明。
• 例如:标准库中符号(类型、变量、常量、函数等)都在 std 名命空间块中声明。cout 在 std 名命空间块中声明,则 std::cout 则是该变量的有限定名
• “::”是作用域解析运算符。
声明与使用
语法
namespace 命名空间名 { 声明序列 }
• 声明具名命名空间
using namespace 命名空间名 ;
using 命名空间名 :: 成员名 ;
名命冲突示例
/* ns-helloworld.cpp */ |
std::cout 是标准输出流对象有限定名称,避免了字符串变量 cout 的命名冲突
嵌套示例
/* ns-embed.cpp */ |
引用
引用的概念
• 声明具名的变量引用,即既存对象或函数的别名。
• 引用名特点:使用时类似变量,作为参数时能传引用
左值声明与示例
左值引用的申明:type &别名 [= 左值表达式]
/* ref-definition.cpp */ |
注意
引用不是对象。它们可以不占用存储,尽管若需要分配存储以实现所需语义(例如,引用类型的非静态数
据成员通常会增加类的大小,量为存储内存地址所需),则由编译器具体实现决定。
因为引用不是对象,故
• 不存在引用的数组
• 不存在指向引用的指针
• 不存在引用的引用
• C++不存在引用为空的概念,即引用必须被定义
指针与引用
• 相同:可以使一个函数向调用者返回多个数值。
• 不同:原理不同。引用作为函数参数,实参是变量本身,形参是实参变量的别名,使用变量时不需要解引用。而指针作函数参数,则实参是某变量的地址,使用这个地址访问对应的变量必须解引用。指针可以是 null 值,引用不可以是 null 值。
• 从返回值的角度看,引用形参比利用指针方便。
理论题
1
下述语句的输出是: |
1 + “20.24”
“20.24” 是字符串字面量,类型为 const char*,指向字符 ‘2’ 的地址。
1 + “20.24” 是对指针的算术运算。指针加 1 会移动 sizeof(char)(即 1 字节),因此指向字符串的第二个字符 ‘0’。
此时,指针指向的子字符串为 “0.24”,cout 会从该位置开始输出,直到遇到终止符 \0,故输出 0.24。
2
所有同名命名空间块的内容会被合并到同一命名空间
3
以下代码的输出结果是什么? |
std::fixed 是 C++ 中的流操纵符,用于强制浮点数以固定小数格式输出,而非科学计数法。当未指定精度时,默认保留 6 位小数,不足的位数会自动补零
若需控制小数点后的位数,需结合 setprecision(n)
例:
cout << fixed << setprecision(2) << 3.14159 << endl; |