输入与输出:(iostream)
#include <iostream> using namespace std; int main(){ cout << "hello" << endl; // endl: 结束当前行,并将与设备关联的缓冲区中的内容刷到设备中 int v1,v2; cin >> v1 >> v2; return 0; }
字面值:字面值常量的形式和值决定了他的数据类型。
十进制:int、long、long long中最小那个
八进制、十六进制:int、unsigned int、long、unsigned long、long long、unsigned long long中最小那个。
尽管整型字面值可以存在带符号数据类型中,但严格来说十进制不会是负数,如-42,负号并不在字面值之内,他的作用仅仅对字面值取负数而已
默认初始化:定义于任何函数体之外的变量被初始化为0,定义在函数体内的内置变量将不被初始化。
声明和定义:声明规定变量的类型和名字,而定义还申请存储空间,也可能会为变量赋一个初始值。(变量可以被声明多次,但只能定义一次)
extern int i ; // 声明 int j; // 定义 extern int i = 0; // 定义
引用:为对象起另外的名字,必须初始化,必须严格匹配类型
int a = 0; int &r = a; int &r1; // 必须初始化 double i = 3.14; int &r2 = i; // 类型不匹配
指针:
void* 指针:可用于存放任意对象的地址。但不能对其的指向的对象进行操作(不知道具体类型),仅仅是内存空间。
const:(仅在文件内有效)必须初始化,不能改变的值。编译器将在编译过程中把用到该常量变量的地方都替换成对应的值。
const int i = get_size(); const int j = 42; const int j; // 错误,必须初始化
const的引用:对常量的引用不能被用作修改它所绑定的对象。
const int ci = 1024; const int &r1 = ci; r1 = 42; // 错误,不能修改常量的引用 int &r2 = ci; // 错误,不能让一个非常量引用指向一个常量对象
指针和const:
const double pi = 3.14; double *ptr = π // 错误,不是指向常量的指针 const double *cptr = π *cptr = 42; // 错误指向常量的指针不能改变指向的值 int err_num = 0; int *const curErr = &err_num; // 常量指针 curErr只能一直指err_num
预处理器:预处理器是在编译之前执行的一段程序,当预处理器看到#include 标志是就会用指定的头文件的内容代替#include。
头文件保护符:头文件保护符依赖于预处理变量(无视作用域的规则),预处理变量有俩种状态:已定义和未定义。#define 指令把一个名字设定为预处理变量,另外俩个指令则是分别检查某个指定的预处理变量是否已经定义:#ifdef 当且仅当变量已定义时为真,#ifndef 当且仅当变量未定义时为真。一旦检查结果为真,则执行后续操作直至遇到#endif 指令为止。
// 防止重复包含的发生 #ifndef SALES_DATA_H #define SALES_DATA_H ..... #endif
原文:https://www.cnblogs.com/xcxy-boke/p/11318289.html