一些知识
指针: https://www.cnblogs.com/tongye/p/9650573.html
int *p; // 声明一个 int 类型的指针 p char *p // 声明一个 char 类型的指针 p int *arr[10] // 声明一个指针数组,该数组有10个元素,其中每个元素都是一个指向 int 类型对象的指针 int (*arr)[10] // 声明一个数组指针,该指针指向一个 int 类型的一维数组 int **p; // 声明一个指针 p ,该指针指向一个 int 类型的指针
声明一个指针变量并不会自动分配任何内存。在对指针进行间接访问之前,指针必须进行初始化:或是使他指向现有的内存,
或者给他动态分配内存,否则我们并不知道指针指向哪儿,这将是一个很严重的问题,稍后会讨论这个问题。初始化操作如下:
/* 方法1:使指针指向现有的内存 */ int x = 1; int *p = &x; // 指针 p 被初始化,指向变量 x ,其中取地址符 & 用于产生操作数内存地址 /* 方法2:动态分配内存给指针 */ int *p; p = (int *)malloc(sizeof(int) * 10); // malloc 函数用于动态分配内存 free(p); // free 函数用于释放一块已经分配的内存,常与 malloc 函数一起使用,要使用这两个函数需要头文件 stdlib.h
*(p++) 先取值在p++ 等价于先 *p 然后p++
*(++p) 先p++在取值
输入输出流
cin 只会读取到空格,制表符,换行符前面
getline(cin, inputLine);可以使用一个叫做 getline 的 C++ 函数。此函数可读取整行,包括前导和嵌入的空格,并将其
存储在字符串对象中。其中 cin 是正在读取的输入流,注意吃掉前一行的换行符,而 inputLine 是接收输入字符串的 string 变量的名称。
遇到换行符或者EOF就停止
getline(cin,line,'#');详解(头函数algorithm)
https://blog.csdn.net/deepseazbw/article/details/71248597?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-3&spm=1001.2101.3001.4242
http://www.cppblog.com/tommyyan/articles/8023.html
默认是以\n结束
(头函数 sstream)
istringstream 转为C++风格的输入流 可做getline的cin参数,用于多行getline的使用
https://blog.csdn.net/weixin_28949185/article/details/102652477
stringstream 可以做C风格的输入输出流(实现string 到别的类型的转换)
void s2i(string &str,int &num) { stringstream ss; ss<<str; ss>>num; }
该函数直接实现了从string类型到int类型的转换
所以是可用于输入输出流。
https://blog.csdn.net/liuweiyuxiang/article/details/89070296?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param