C ++ 基本语法
笔记:https://blog.csdn.net/ClaireSy/article/details/108422945
- 第一个程序
- 注释
- 变量
- 常量
- 关键字
- 标识符命名规则
- 数据类型
- sizeof 关键字
- 浮点型
- 字符型
- 转义字符
- 字符串型
- 布尔类型
- 数据的输入 cin
- 运算符
- 程序流程结构
- 跳转语句
- 数组
- 冒泡排序
- 二维数组
- 函数
- 指针
- 结构体
#include<iostream> using namespace std; int main() { cout << "HelloWorld" << endl; system("pause"); }
单行注释 //
多行注释 /* 内容 */
数据类型 变量名称 = 初始值 ;
// 单行注释 /* 1. 多行注释 2.... */ int a = 10;
用于记录程序中不可更改的数据,常量一旦定义不可修改
#define 宏常量
const 修饰的变量
#include<iostream> using namespace std; #define DAY 7 int main() { cout << "一周有" << DAY << "天" <<endl; const int month = 12; cout << "一年有" << month << "月" << endl; system("pause"); }
- 标识符不能是关键字
- 标识符只能是字母、数字、下划线
- 第一个字符必须是字母或者下划线
- 标识符区分大小写
变量定义: 变量类型 变量名 = 变量初始值;
变量类型存在的意义是为变量分配合适的内存空间
short 2个字节 (-32768~32767)
int 4个字节 (-2147483648~2147483637)
long 32位4字节,64位 8 字节
long long 8字节
short num_1 = 10; int num_2 = 10; long num_3 = 10; long long num_4 = 10;
int x = sizeof(类型);
cout << sizeof(short) << endl; cout << sizeof(int) << endl; cout << sizeof(long) << endl; cout << sizeof(long long) << endl;
单精度:float
双精度:double
float 4字节,7有效位数
double 8字节,15位精度
默认情况下,小数显示6位有效数字
科学计数法
float f1 = 3e2; cout << f1 << endl;
float f2 = 3e-2;
定义 char ch = 'a';
字符类型占用的内存空间: 1 字节
- 只能使用 ‘ ’ ,不能使用双引号
- 单引号内不能超过4个字符,但是始终只识别最后一个字符、
- 字符对于的数字 ASCII
ASCII 表: http://ascii.911cha.com/
换行 \n
水平制表 \t
反斜杠 \\
cout << "he\tWorld"<<endl; cout << "hel\tWorld" << endl; cout << "hedd\tWorld" << endl; cout << "heddd\tWorld" << endl;
有两种风格
1.C语言风格的串
char 变量名[] = "字符串";
2.C++ 风格字符串
string 变量名 = “字符串”;
//[] 必须放在变量后 char str[] = "hello world"; cout << str << endl; string str2 = "Hello ,World 2.0"; cout << str2 << endl;
string 类型需要包含新的头文件
#include<string.h>
- true 本质是1
- false 本质是0
占用 1 个字节的内存,本质上 0 代表假 , 1 代表真。 布尔类型非0即为真
关键字 cin
格式: cin >> 变量 ;
int a; cout << "请输入a:"; cin >> a; cout << "a:"<<a<<endl;
算术运算符: + - * / % ++ --
赋值运算符:+= -= *= /= %=
比较运算符:== , !=, >,<,<=,>=,
逻辑运算符:! && ||
- 整数相除,只保留整数部分
- 取余 % 只能作用在整数
- 对整数赋值小数,真正生效的只有整数部分
- && 前置为假,则后条件不判断, || 前置为真,后条件不判断,即短路
- 顺序结构 顺序执行,不发生跳转
- 选择结构 if 语句
- 循环结构 while, for, do-while
分支包括:单个 if ,if -else , if -else if - else ,嵌套if 等
三目运算符: 表达式1 ? 表达式2 : 表达式3;
int i = 0; int tag = 1; do { cout << i << endl; i++; if (i == 50) { tag = 0; } } while (tag);
- break
可以在 switch 中跳出,可以在循环中 ,可以出现在多层循环中
- continue 跳过当前行以下的代码
- goto 可以无条件的跳转语句
语法: goto 标记
goto flag; cout << "aaa"<<endl; cout << "bbb"<<endl; flag: cout << "ccc"<<endl;
存放相同的数据元素
数据类型 数组名[数组长度];
数据类型 数组名[数组长度] = {值1,值2。。。};
数据类型 数组名[] = {值,,,};
一维数组数组名的用途:
- 可以统计整个数组在内存中的长度
- 可以获取数组在内存中首地址
//数组大小 cout << sizeof(arr) << endl; //数组第一个元素的大小 cout << sizeof(arr[0]) << endl; //数组长度 cout << sizeof(arr) / sizeof(arr[0]) << endl; //数组首地址 cout << arr << endl;
//数组首地址 cout << (int)arr << endl; //第一个元素地址 = 数组首地址 cout << (int)&arr[0] << endl; //第二个元素地址 = 第一个元素地址 + 类型大小 cout << (int)&arr[1] << endl;
原理:遍历数组,每一次遍历都将昂一个极大或者极小的值放在数组的一端
void bubbleSort(int data[],int size) { for (int i = 0; i < size-1; i++) { for (int j = 0; j < size-i-1; j++) { if (data[j] < data[j + 1]) { int temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; } } } }
数据类型 数组名 [行数][列数] ;
int arr[2][3]; int arr2[2][3] = {1,2,3,4,5,6}; int arr3[2][3] = { {1,2,3},{4,5,6} }; int arr4[][3] = {1,2,3,4,5,6}
函数参数传递:实参、形参
值传递:
形参的变化不会影响到原来的值
引用传递:
传递的是应用的地址
函数声明:提前告诉编译器函数的存在,声明可以多次,但是定义只能用有一次
函数的分文件编写:
- 创建 .h 文件
- 创建 .cpp 文件
- 在 .h 文件创建声明
- 在 cpp 文件包含头文件 (使用 ” “)
#pragma once #include<iostream> using namespace std; void swap(); void swap() { cout << "swap..." << endl; }
Main
#include "swap.h" int main() { swap(); return 0; }
int a = 10; int *p = &a; cout << "a:" << a << endl; cout << "p:" << p << endl; cout << "*p:" << *p << endl;
指针变量 32位为 4 字节 ,64 位 8字节
空指针&野指针
空指针:指针变量指向地址编号为0 的指针(0~255 内存 编号是系统占用,不能访问)
用于对指针变量进行初始化,空指针不可以进行访问
int *p =NULL;
野指针:指针变量指向非法的内存空间
int* p = (int*)0x00110; cout << *p << endl;
const 修饰指向
- const 修饰指向 指针的指向可以修改,指针指向的值不可修改
- const 修饰常量
- const 修饰指针以及常量
//常量指针 int a = 10; int b = 20; const int* p = &a; //*p = 20; 不可修改 p = &b;
//指针常量 int a = 10; int b = 20; int * const p = &a; //p = &b; 指针不可修改 *p = 30;
//const 修饰指针与常量 int a = 10; int b = 20; const int * const p = &a; //p = &b; 指针不可修改 //*p = 30; 值不可修改
构建用户自定义的数据类型
语法:
struct 结构体名称{
成员列表
};
结构体数组: struct 结构体名称 数组名[] = {...}
void print(const int * a){ //a = 10; }