getline这个方法的使用, 可以获取用户输入的一行数据, 保存到数组中:

#include <iostream>
#include <string>
int main() {
using namespace std;
// string s;
// getline(cin, s);
// cout << s << endl;
const int size = ;
string strs[size];
for(int i=; i<size; i++) {
getline( cin, strs[i] );
}
for(int i=; i<size; i++) {
cout << strs[i] << endl;
}
return ;
}

  使用内置类, 计算字符串的长度:

#include <iostream>
#include <cstring>
int main() {
using namespace std;
char str[] = "abcd";
cout << strlen(str) << endl;
return ;
}

  C++模版类, 和java泛型差不多 , C语言是没有模版类这一说的, C++中新增了模版:

#include <iostream>
#include <string>
#include <array> int main() {
using namespace std;
const int SIZE = ;
array<string, SIZE> *p;
for(int i=; i<SIZE; i++) {
cout << "enter number" << endl;
cin >> (*p)[i];
cout << "" << endl;
}
return ;
}

  数字指针, 在实际上,如果一个函数返回指针没有啥意义,因为, 如果函数内部要返回指针,那么这个指针必须是外部传递进来的参数,如果是内部创建指针, 当函数执行结束的时候, 内部指针自然会被销毁;

#include <iostream>
#include <string>
#include <array>
int* run(int *n) {
*n = (*n)*;
return n;
}
int main() {
int number = ;
int *n = run(&number);
std::cout << *n << std::endl;
return ;
}

  指针的写法非常多,稍微不同的写法,代表的意义可能天差地别, 以下的(*p)[0]是指获取数组的第一个值 , 但是*p[0]的意思却完全不同了:

    std::array<int,> *p;
(*p)[] = number;

  函数指针

#include <iostream>
#include <string>
#include <array>
void show(int a, int b) {
using namespace std;
cout << a+b <<endl;
}
int main() {
void (*p)(int, int);
p = show;
(*p)(,);
return ;
}

  函数指针

#include <iostream>
using namespace std;
void show(int num) {
cout << num* << endl;
}
void brige(int num, void (*p)(int) ) {
p(num);
}
int main() {
int number;
cout << "enter number" << endl;
cin >> number;
brige(number, show);
return ;
}

  内联函数, 是C++新增的特性, 使用的比较少, 主要是代码优化有关系, 对于代码比较少, 而且调用次数比较多的函数, 可以定义为内联函数;

  内部原理是定义宏:

#include <iostream>
#include <string>
inline void show() {
using namespace std;
cout << "nice" << endl;
}
int main() {
show();
return ;
}

  引用也是C++新增的特性, 务必区别于指针, 引用的地址和原来数据的地址是相同的, 引用必须在变量定义的时候就初始化:

#include <iostream>
int main() {
int i = ;
int &j = i;
j = ;
std::cout << i << std::endl;
std::cout << &i << std::endl;
std::cout << &j << std::endl;
return ;
}

  按照引用传递主要用在函数参数中, 在形参上定义引用, 那么在函数内部做的任何数据修改, 都会修改原始值:

#include <iostream>
void swap (int &a, int &b) {
int temp;
temp = a;
a = b;
b = temp;
}
int main() {
using namespace std;
int a = ;
int b = ;
swap( a, b );
cout << a << endl; //输出2
cout << b << endl; //输出1
return ;
}

  编译器会发出警告, 告诉开发者一些错误, 比如函数没有指定返回值, 但是这个并不会影响程序正常运行:

#include <iostream>
#include <cstring>
int run () {
if(false){
return ;
}else{ }
}
int main() {
run();
printf("end of file");
return ;
}

  C++中原型的概念:原型描述了函数的接口, 它将函数的返回类型, 参数类型以及参数个数定义在文件头, 原型有利于程序执行效率的进行提高 , 相当于java中的接口文件, 只是包含接口, 没有具体的实现:

#include <iostream>
void run(); //原型的定义
#include <cstring>
int main() {
run();
return ;
}
void run () {
std::cout << "done" << std::endl;
}

  

C++代码复习笔记:第三章的更多相关文章

  1. C语言代码复习笔记:第二章

    输出星星 #include <stdio.h> void printStart( int num ) { ) { printf("*"); }; } int main( ...

  2. Android群英传笔记——第三章:Android控件架构与自定义控件讲解

    Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...

  3. 《Linux内核设计与分析》第六周读书笔记——第三章

    <Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...

  4. spring boot 笔记--第三章

    spring boot 笔记 第三章,使用Spring boot 构建系统: 强烈建议支持依赖管理的构建系统,Maven或Gradle 依赖管理: Spring Boot的每版本都会提供它支持的依赖列 ...

  5. The Road to learn React书籍学习笔记(第三章)

    The Road to learn React书籍学习笔记(第三章) 代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() ...

  6. JVM学习笔记-第三章-垃圾收集器与内存分配策略

    JVM学习笔记-第三章-垃圾收集器与内存分配策略 tips:对于3.4之前的章节可见博客:https://blog.csdn.net/sanhewuyang/article/details/95380 ...

  7. 《DOM Scripting》学习笔记-——第三章 DOM

    <Dom Scripting>学习笔记 第三章 DOM 本章内容: 1.节点的概念. 2.四个DOM方法:getElementById, getElementsByTagName, get ...

  8. [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设

    [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设 敲黑板!! <q>元素添加短引用,<blockquote>添加长引用 在段落里添加引用就使用< ...

  9. Unity 黑暗之光 笔记 第三章

    第三章 角色控制   1.创建游戏运行场景并导入素材资源 2.创建和管理标签 1 //const 表明这个是一个共有的不可变的变量 2 public const string ground = &qu ...

  10. 《linux内核设计与实现》读书笔记第三章

    第3章 进程管理 3.1 进程 1.进程 进程就是处于执行期的程序. 进程包括: 可执行程序代码 打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间 一个或多个执行 ...

随机推荐

  1. 解决winform中mdi子窗体加载时显示最大化最小化按钮的方法

    场景:在mid加载子窗体的时候如果指定WindowState为Maximized,加载完成后主窗体会显示最大化.最小化.关闭的按钮图标. 解决方法: 1.更改主窗体FormMain的属性.制定Main ...

  2. 在xcode5下设置两个viewController跳转——关键是禁用arc

    1.禁用arc 2.然后使用如下代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( ...

  3. Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式

    from://http://blog.csdn.net/androiddevelop/article/details/11100109 相关文章列表: <Android 自动编译.打包生成apk ...

  4. Linux内核:分析coredump文件 - 内核代码崩溃

    转自:http://blog.csdn.net/guowenyan001/article/details/12975221 一.分析Core文件 1.1 找到core文件目录,启动mycrash:my ...

  5. 完全定制UITabBarViewController

    完全定制UITabBarViewController 效果   源码 https://github.com/YouXianMing/iOS-Project-Examples 中的 TotalCusto ...

  6. 抄袭证据之中的一个CMM与CMMI的名称

    以下文字来自我即将完毕的文章,谢博士说她没有抄袭,可是文中实在是有太多的漏洞了. 6.2.7 P120页中: "实际上终于所谓的统一方法论就是标准,尽管作标准并非目的.但标准是必须有的.能够 ...

  7. [Web 前端] 如何构建React+Mobx+Superagent的完整框架

    ReactJS并不像angular一样是一个完整的前端框架,严格的说它只是一个UI框架,负责UI页面的展示,如果用通用的框架MVC来说,ReactJs只负责View了,而Angular则是一个完整的前 ...

  8. 命令行界面 (CLI)、终端 (Terminal)、Shell、TTY的区别

    虽然这个话题已是老生常谈,搜索一下应该也能找到大把的相关文章.不过难得提到了这方面,就趁此机会把我的理解写下来,一来看看我是不是真正理解了,二来看看我能不能把它们之间的区别讲得更加简明易懂. 0. 太 ...

  9. 京东的Netty实践,京麦TCP网关长连接容器架构

    背景 早期京麦搭建 HTTP 和 TCP 长连接功能主要用于消息通知的推送,并未应用于 API 网关.随着逐步对 NIO 的深入学习和对 Netty 框架的了解,以及对系统通信稳定能力越来越高的要求, ...

  10. 多线程学习-ListenableFuture使用介绍以及示例

    Guava为Java并行编程Future提供了很多有用扩展,其主要接口为ListenableFuture,并借助于Futures静态扩展.ListenableFuture顾名思义就是可以监听的Futu ...