知识点:
- 数组的几种初始化方式
int cards[4] = {3, 4, 5 ,6}; int cards[4]; // 所有元素初始化为0 int cards[] = {3, 4, 5, 6}; // sizeof(cards) / sizeof(int) = 4 // c++11新增 int cards[4] {3, 4, 5, 6}; // 可以省略 = int cards[4] {}; // 所有元素初始化为0
- 字符数组表示字符串
char fish[] = "Bubbles"; // sizeof(fish) / sizeof(char) = 8 因为末尾自动补上了'\0'
- 字符串的输入
char c1[10]; char c2[10]; cin >> c1; // hello wo cin >> c2; // rld cout << c1 << c2; // hello wo
原因: cin 使用空白(空格、制表符和换行符)来确定字符串结束位置
面向行的输入:
1.getline() : 以回车作为输入结尾的标识char c1[10]; char c2[10]; cin.getline(c1, 10); // hello wo cin.getline(c2, 10); // rld cout << c1 << c2; // hello world
getline()函数每次读取一行,通过换行符确定行尾,但不保存换行符。相反,他用空字符来替换换行符。
2.get() : 与getline()类似,get()是istream类的另一个成员函数,它同样以回车作为输入结尾的标识,但get()并不再读取并丢弃换行符,而是将其留在输入队列中,所以应该在每次输入过后将换行符处理
char c1[10];
char c2[10];
cin.get(c1, 10); // hello wo
cin.get();
cin.get(c2, 10); // rld
cout << c1 << c2; // hello world
注:cin在输入完成后也不会处理换行符,所以在cin后面接cin.getline()的时候,要再在前面加一个cin.get()!
c++中的结构 struct
struct student { char name[20]; int number; }; student st1; student st2; // c++ struct student st3; struct student st4; // c // 如果在c语言中要想省去struct关键字,需要typedef typedef struct student{}student; //初始化: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/
c++结构在c结构的基础上,增加了成员函数功能。不过这些高级特性通常被用于类中。
共用体(union)
共同体是一种数据格式,能够储存不同的数据类型,但只能同时存储其中一种类型。
用途之一就是可以节省空间。struct widget { char brand[20]; int tyoe; union { long id_num; char id_char[20]; } } ... widget price; ... if (price.type == 1) cin >> price.id_num; else cin >> price.id_char;
枚举(enum)
enum spectrum {red, orange, yellow, green, blue, violet, indige, ultraviolet}; spectrum band; band = spectrum(3); // green