C++ Primer Plus 学习笔记(一)

目录

第二章. 开始学习C++

1. 主函数

2. 预处理器

3. endl

第三章. 处理数据

1. 简单变量

2. 整型

3. C++ 初始化:

4.字符

5. bool

6. const限定符

7. 浮点数

8. 算数运算符

9. 类型转换

 第四章. 复合类型

1. 数组

 2. 字符串

3. string 类


第二章. 开始学习C++

1. 主函数

int main() 等效于 int main(void)

即空括号等效于不接受参数。main函数相当于程序与系统的接口,可以看作返回值给操作系统并不给程序,区分大小写。

2. 预处理器

与 C 不同,C++ 风格的头文件没有拓展名,即没有 .h 后缀,如 iostream。

命名空间如:   

using namespace std;

使用using编译指令,可以更明确的指示所使用的变量或函数等属于哪。也可以只使用命名空间的某些元素,如:

using std :: cin
using std :: cout

来直接使用 cout,cin。 

3. endl

endl 在 iostream 头文件中定义,在 std 命名空间中,为控制符,作用与 '\n' 类似,使光标换行。 

第三章. 处理数据

1. 简单变量

变量名第一个字符不能是数字,区分大小写,只能是数字、字符和下划线(_),不能将C++关键字作为变量名,不要创建以下划线开头的变量名,把它留给标准库。

2. 整型

short (int) 至少16位;int 至少与 short 一样长;long (int) 至少32位; long long (int) 至少64位,至少与 long一样长。

3. C++ 初始化:

int wrens = 432;
int ham = { 24 };
int emus {7};

若大括号中没用东西,置零。这种形式只能用常量,不能用变量初始化。

int rocs = {}; // rocs = 0
int psy {}; // psy = 0;
int n = 10;
int pn { n };  // 不可以

整型字面值:即显示书写的常量,如200、173。C++ 使用前1-2位标识进制,第一位1-9表示十进制,0(数字零表示八进制,0x 或 0X 表示十六进制。

使用控制符可以使输出为想要的进制方式。

cout << std::dec; // 以后cout数字时输出十进制
cout << std::hex; // 以后cout数字时输出十六进制
cout << std::oct; // 以后cout数字时输出八进制

4.字符

char 类型实际是整型,它是否有符号由 C++实现决定。字符型有扩展类型 wchar_t,具体位数由系统底层决定,用 wcin 和 wcout 处理扩展字符流。

wchar_t bob = L'p';
wcout << L"tall" << endl;

char16_t   char32_t   同理,前者长16位,后者长32位,都是无符号类型。前者用前缀 u 表示,后者用 U 表示。

char16_t ch1 = u'q';
char32_t ch2 = U'\U0000222B'; // U\表示通用字符名,\u后接8位16进制,
                              // \U后接8位16进制,表示其他的字符名,如日耳曼元 
                              // 音等。

5. bool

true 和 false 可以转换成 int 类型,true 是 1, false 是0。

6. const限定符

类似#define,创建一个字符常量。要初始化,无法声明后再赋值。

7. 浮点数

float 至少32位,double 至少48位,且不少于 float,long double 不少于 double。有效位由低到高。浮点常量默认 double。

8. 算数运算符

求模时一正一负, 符号满足:(a / b) * b + a % b = a。

9. 类型转换

0 转换成 bool 为 false, 非0为 true。

强制类型转换:

int thorn;
(long) thorn  // 转成long
long (thorn)  // 转成long

计算机最自然的类型是 int 和 double,如两个 short 相加,计算机会先转成 int 结果再转成 short。

auto 关键字声明变量类型时:

auto m = 10; // m type int
auto n = 1.2 // n type double
auto x = 1.3e12L // x type long double

 第四章. 复合类型

1. 数组

数组声明时,元素个数可以是常量表达式,如:8 * sizeof(int),不能是变量。sizeof(数组名)是数组所有元素的字节数。数组初始化可以省略 “=“:

int num[8*sizeof(int)];  // 可以
int n =8;
int num2[n];  // 不可以
int count[4] { 12, 16, 11}; // 元素分别为12, 16, 11, 0

 2. 字符串

字符串结尾必须有 ‘\0’ ,‘s’ 和 “s” 不同,前者字符,后者字符串,有 ‘\0’。cout 允许字符串拼接:

cout << " I'd give my" " right arm.\n";
// 等价于
cout << " I'd give my right arm.\n";

拼接时第一个字符串的 ‘\0’ 被 ‘r’ 替换。

字符串输入时,cin 遇到 ‘ ’(空格)停止,遇到换行符不读取,留在输入队列。用cin.getline(数组名, 字符个数),读入一行字符,包括 ‘ ’,“字符个数“包括空字符,实际是要-1的,该函数会读取换行符并转成空字符。cin.get(数组名,字符个数)与 cin.getline()类似,也可以输入一个字符(cin,get(ch)),不过不读取换行符,即越不过换行符,需要再加 cin.get() 或 直接 cin.get(数组名,字符个数).get(),跨过换行符。

3. string 类

使用string类要添加头文件string,它在std空间中,要 using namespace std 或者std :: string使用。string类变量,自动处理处理字符串大小,同数组类似,可以用下标访问元素。初始化与字符串数组一样,未初始化的string类长度为0。

string str1 = "I "; //初始化
string str2 {"love "};  // 初始化
cout << str2[0] << endl;  //输出'l'
string str3;
str3 = str1 + str2; //拼接
str1 += str2;  // 拼接

4. 结构

与C不同,声明已定义的结构的变量时,可以省略关键字 struct,定义结构时,内部元素之间用分号(‘;’)分隔开。结构初化或者赋值时,用逗号(‘,’)始化:

struct dec  // 定义结构,元素间用分号
{
    char name[20];
    float vol;
    double price;
};
int main(void)
{
    dec duck1 = {"Daq", 0.12, 9.98}; // 初始化结构,元素间用逗号
    dec duck2 {"CDA", 0.14, 0.598};  // 另一种初始化方式
    dec duck3 {}  // duck3个元素置0
    dec duck4 = duck1;
}

同类结构可以用 ”=“ 赋值。可以定义没名称的结构类型,即定义时省略结构名称。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值