第一个c++程序
# include <iostream> // 标准输入输出流 input输入 output输出
using namespace std; // 使用标准 命名空间
int main(){
//cout 输出流对象 向屏幕输出内容 endl 结束输出且换行
cout << "hello world!" << endl;
return 0;
}
c++ 数据类型
bool | 布尔 | 表示是否的概念 false true 0 1 |
int | 整数 | 表示计数或数量 |
float | 单精度 | 近似表达实数的概念 |
double | 双精度 | 近似表达实数 |
char | 字符 | 代表一个ASCII码符号 -128 - 127 |
void | 无 | 表示没有,或者空的概念 |
//sizeof(变量) 或者 sizeof(类型) 来探测 可以使用sizeof来查看占用内存
sizeof(int); // 4字节 1字节==8位
typedef long long int LL; //typedef 可以给类型赋予别名,与原名等价
变量及其作用域
生存期:什么时候分配内存,什么时候释放内存
作用域:在什么位置可见,什么位置不可见
#include <iostream>
using namespace std;
//全局变量
//全局变量可以初始化,可以用表达式
//全局变量可以在多个函数间,多个文件间共享
//全局位置不能执行非定义语句
int a = 100;
int b = 200;
int c;
c = a + b; // 编译错误!不能在全局位置执行其它语句
int main()
{
cout << c << endl;
return 0;
}
// 局部变量
int main()
{
int a = 5, b = 8;
{ int t = a; a = b; b = t; } // t 作用域仅在大括号内
cout << a << "," << b << endl;
}
常数与常量
//常数:也叫立即数,或者“字面量”,就是硬编码到程序中的那些“死”数据
//字符常数 整型常数 浮点型常数
char a = 'A';
int a = 365;
double a = 0.5e12;
//常量 用 const 修饰的变量,它占用数据区内存,但编译器保证你不能修改它的值
const int PI = 3.14; (#define PI 3.14)
//枚举类型
enum week{Mon, Tue, Wed, Thu, Fri, Sat, Sun} a;
修饰符
//类型修饰符
//对大类型进行细化, short long signed unsigned
//const 常量,
//volatile 不要进行自动优化
//存储修饰符
//static 修饰,静态空间,与全局变量同在
//extern 跨文件的伪声明 并不分配内存,只是告诉编译器,全局变量会在另一个地方声明
内存类型
//只读代码: 存代码,也包括立即数,以及定常资源
//静态空间: 存放static变量,全局变量,常量
//栈区(stack): 自动变量,函数执行时的上下文环境 ***后进先出
//堆(heap): 程序运行中,动态地申请及归 ***自由进出
基本运算符
![](https://img-blog.csdnimg.cn/img_convert/258ae5d7365f4fb1aa4168d953033b71.png)
// 字符型也可以参与整数运算
char b = 'A';
b = b + 32;
cout << b << endl;
选择与分支
//if 的条件中尽量用 bool, 其它类型会强制转为bool
xxx = a ? b : c; // ?: 是唯一的三目运算符
int a = 5, b = 2, c = 8;
if(a>b && a>c)
cout << (b > c? b : c) << endl;
if(b>a && b>c)
cout << (a > c? a : c) << endl;
if(c>a && c>b)
cout << (a > b? a : b) << endl;
//switch语句的使用 满足要求记得使用break
switch(表达式){
case 1:
代码块1;
break;
case 2:
代码块2;
break;
default:
默认处理
}
循环
1、while 和 do..while
![](https://img-blog.csdnimg.cn/img_convert/138358659143a9e526aa4ae748ed5c2e.png)
2、for循环
![](https://img-blog.csdnimg.cn/img_convert/553778376dd28d7d4890dd611b6ba7bc.png)
// 打印九九乘法表 for
int nine_nine_cheng_fa_biao()
{
for(int i = 1; i<=9; i++)
{
for(int j=1; j<=i; j++)
{
cout << i<< "*"<< j << "="<< i*j << " ";
}
cout << "" << endl;
}
}
// 打印九九乘法表 while
int nine_nine_cheng_fa_biao1()
{
int i = 1;
while(i <= 9)
{
int j = 1;
while(j <= i)
{
cout << i << "*" << j << "=" << i*j << " ";
j++;
}
cout << "" << endl;
i++;
}
}
函数的定义
![](https://img-blog.csdnimg.cn/img_convert/a9fc4f5cf7a2cb6711860b819d356e69.png)
//函数定义时的参数,称为:形式参数,简称: 形参
//调用函数时,传给它的参数,称为:实际参数,简称: 实参
//函数是重要的==抽象==手段
//函数能让我们把问题分解,化为一个一个小的功能去实现 自顶向下的设计
int myadd(int a, int b){
int t = a * 10 + b;
return t;
} // 使用直接在主函数调用
指针
指针就是存放其它变量地址的小盒子,就好比门牌号,咱们可以通过门牌号找到你家,指针也是如此,可以通过储存变量的地址找到变量的具体值
![](https://img-blog.csdnimg.cn/img_convert/5dc13ca2759953640d98339194ea43d5.png)
int a = 10;
int * p;
p = &a;
cout << &a << endl;
cout << a << endl;
cout << p << endl; // 打印a的地址
cout << *p << endl; // 打印a的值
/*可以在参数中使用指针
形参是指针类型时,可以改变实参的值
我们可以利用这个特性,间接地实现多个返回值*/
void swap(int* a, int* b) //交换俩个变量的值
{
int t = *a;
*a = *b;
*b = t;
}
引用类型
//引用实则就像取别名,像多对一,一个物品可以有很多哥标签
//在实现上 ,被转换为对指针的操作
int a = 100;
int& b = a;
b++; //实际上就是 a++
数组
数组就是存在一起的一组相同类型的变量 就是一个个地址紧挨的变量 储存在栈中
![](https://img-blog.csdnimg.cn/img_convert/e5277805511dcda6e518304209213371.png)
// 查看数组占用的空间
#define N 100
......
int a[N];
cout << sizeof(a) << endl;
return 0;
// 元素初始化
//指定元素个数
int a[3] = {10,20,50};
//不指定元素个数(自动推断)
int a[] = {3,6,9};
//指定值的个数少于元素个数
int a[10] = {10,20,30}; //没有赋值的元素初始化是随机值
ps:记录一下学习的过程,希望对大家有些帮助