目录

  • 起步:hello c++
  • 常量(不可修改):#define ,const
  • 关键字
  • 标识符(常量,变量)
  • 数据类型: 给变量分配合适的内存空间
    • 整型:short,int,long,long long
    • sizeof: 统计数据类型所占内存大小
    • 实型(浮点型):单精度float,双精度double;科学计数法e
    • 字符型 char
    • 转义字符 /
    • 字符串 string
    • 布尔类型 bool : true false
    • 数据输入 cin >>
  • 运算符
    • 算数运算符
    • 赋值运算符
    • 比较运算符
    • 逻辑运算符
    • 三目运算符:返回的是变量,可以继续赋值
  • 程序流程结构
    • switch case default break
    • while
    • do while
    • for
    • 跳转语句:break-switch;循环;嵌套
    • 跳转语句:continue,筛选条件
    • goto
  • 数组
    • 元素逆置
    • 冒泡排序
    • 二维数组
  • 函数
    • 函数声明
    • 函数分文件编写创建
  • 指针
    • 内存空间分配
    • 空指针(初始化指针变量),野指针
    • const 修饰指针
    • 指针,数组,函数
  • 结构体
    • 结构体数组(一维)
    • 结构体指针
    • 结构体嵌套结构体
    • 结构体做函数参数
    • 结构体中const的使用(防止误操作)
    • 结构体案例

起步:hello c++

#include <iostream>
using namespace std;int main(){cout <<"hello c++"<< endl;// system("pause");return 0;
}

常量(不可修改):#define ,const

#define 宏常量: #define 常量名 常量值通常在文件上方定义,表示一个常量
const修饰的变量 : const 数据类型 变量名=变量值通常在变量定义前加关键字const,修饰该变量为常量,不可修改
#define Days 7
const int days=7;

关键字

标识符(常量,变量)

数据类型: 给变量分配合适的内存空间

整型:short,int,long,long long

sizeof: 统计数据类型所占内存大小

int a=10sizeof(a);
sizeof(int)

实型(浮点型):单精度float,双精度double;科学计数法e

编译器默认把小数视为double,所以需要在小数后加个f.

float a = 3.14f;
默认情况下 输出小数会显示出 6位 有效数字

科学计数法e

float a=3e2; // 3* 10^2
float a=3e-2; // 3* 0.1^2

字符型 char


ASCII编码 (int)char

a - 97;
A - 65

转义字符 /

字符串 string

1、C风格字符串:char 变量名[] = "字符串值"char str1= "hello world"
2、C++ 风格字符串:string 变量名 = "字符串值"#include<string> // 用C++风格字符串时,需包含这个头文件string str2 ="s"

布尔类型 bool : true false

数据输入 cin >>

// int / float / char /string bool a
cin >> a;
cout << a;

运算符

算数运算符

赋值运算符

比较运算符

逻辑运算符

三目运算符:返回的是变量,可以继续赋值

A= a>b ? a : b; //A取 a b 之间较大值
(a>b ? a : b)=100; // 将 a,b 的较大变量重新赋值为100

程序流程结构

switch case default break

int a;cin >> a;switch (a){case 10:cout<< "good"<<endl;break;case 9 :cout<<"normal"<<endl;break;default:cout<<"bad"<<endl;}

while

while(条件语句){循环语句;
}
#include<iostream>
#include<ctime>
using namespace std;int main(){// 添加随机数种子,利用当前系统时间生成随机数,防止每次随机数一致srand((unsigned int )time(NULL));// 生成随机数int num=rand()%100+1; //1-100随机数int value=0; // 玩家猜测cout<<"输入猜测数据"<<endl;cin>>value;// 判断玩家猜测while(true){if(value>num){cout<<"过大"<<endl;}else if(value<num){cout<<"过小"<<endl;}else{cout<<"猜测正确"<<endl;cout<<"real data: "<<num<<endl;break;           }cout<<"重新猜测"<<endl;cin>>value;}// system("pause");return 0;
}

do while

do{循环语句;
}while(循环条件);
#include<iostream>
#include<cmath>
using namespace std;int main(){int data=100;do{if (data==pow((data/100),3)+pow((data%100/10),3)+pow((data%10),3))cout<<data<<endl;data++;}while(data<1000);// system("pause");return 0;
}

for

#include<iostream>
using namespace std;int main(){for(int i=1;i<10;i++){for(int j=1;j<=i;j++){cout<<j<<'*'<<i<<'='<<i*j<<"  ";}cout<<endl;}// system("pause");return 0;
}

跳转语句:break-switch;循环;嵌套

跳转语句:continue,筛选条件

goto

#include <iostream>
using namespace std;int main ()
{// 局部变量声明int a = 10;// do 循环执行LOOP:do{if( a == 15){// 跳过迭代a = a + 1;goto LOOP;}cout << "a 的值:" << a << endl;a = a + 1;}while( a < 20 );return 0;
}

goto 语句一个很好的作用是退出深嵌套例程。例如,请看下面的代码片段:

for(...) {for(...) {while(...) {if(...) goto stop;...}}
}
stop:
cout << "Error in program.\n";

消除 goto 会导致一些额外的测试被执行。一个简单的 break 语句在这里不会起到作用,因为它只会使程序退出最内层循环

数组

数据类型 数组名[数组长度];
数据类型 数组名[数组长度]={element1,.....,elements};
数据类型 数组名[]={element1,.....,elements};

一维数组名用途:

  • 可以统计整个数组在内存中的长度;sizeof(数组名);
    元素个数:sizeof(arr)/sizeof(arr[0])
  • 可以获取数组在内存中的首地址;数组名;

元素逆置

#include<iostream>
using namespace std;int main(){int arr[]={0,1,2,3,4,5,6,7};int start =0;int end=sizeof(arr)/sizeof(arr[0])-1;int temp=0;for (int i=0;i<=end;i++)cout<<arr[i]<<' ';cout<<endl;for(start=0;start<end;start++,end--){temp=arr[start];arr[start]=arr[end];arr[end]=temp;}end=sizeof(arr)/sizeof(arr[0])-1;for (int i=0;i<=end;i++)cout<<arr[i]<<' ';// system("pause");return 0;
}

冒泡排序

#include<iostream>
using namespace std;int main(){int array[]={9,5,6,8,2,3,4};int len=sizeof(array)/sizeof(array[0]);int temp;for (int j=0;j<len;j++){for(int i=0;i<7;i++)cout<<array[i]<<' ';cout<<endl;for (int i=0;i<len-1;i++){if(array[i]>array[i+1]){//升序temp=array[i];array[i]=array[i+1];array[i+1]=temp;}}len--;}len=sizeof(array)/sizeof(array[0]);    for(int i=0;i<len;i++)cout<<array[i]<<' ';//system("pause");return 0;
}

二维数组




函数

函数声明

函数的声明与函数的定义形式上十分相似,但是二者有着本质上的不同。
声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。定义则需要开辟内存。
声明可以写多次,定义只能有一次;

函数分文件编写创建

四步骤:

  • 1、创建后缀名为.h的头文件;
  • 2、创建后缀名为.cpp的源文件;
  • 3、在头文件中写函数的声明;
  • 4、在源文件中写函数的定义;

指针

内存空间分配

在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型;
在64位操作系统下,指针是占8个字节空间大小,不管什么数据类型;

空指针(初始化指针变量),野指针

int *p =NULL; //空指针 ,是不可以进行访问
int *p = (int *)0x1100 // 野指针 指向非法内存空间

const 修饰指针


指针,数组,函数

#include<iostream>
using namespace std;void bubbleSort(int *arr,int len);int main(){int arr[]={4,3,6,9,1,2,10,8,11,7,5};bubbleSort(arr,sizeof(arr)/sizeof(arr[0]));for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)cout<<arr[i]<<' '; return 0;
}
void bubbleSort(int *arr,int len){int temp=0;int *p=arr;for(int i=0;i<len-1;i++){for(int j=0;j<len-1;j++){if(*p > *(p+1)){temp=*p;*p=*(p+1);*(p+1)=temp;}p++;}p=arr;}
}

结构体

C++中创建变量是 struct 关键字可以省略,结构体定义时不可以省略

struct 结构体名{结构体成员列表}
// 创建数据类型:
struct Student{// 成员列表string name;int age;float score;
};

创建方式:

  • struct 结构体名 变量名
struct Student s1;
s1.name="liming";
s1.age=15;
s1.score=98.5f;
  • struct 结构体名 变量名={成员1值,成员2 值,…}
struct Student s2={"hello",16,89.0f};
  • struct 定义结构体时顺便创建变量
struct Student{// 成员列表string name;int age;float score;
}s3={"lkj",14,56.2f};

结构体数组(一维)

struct 结构体名 数组名[元素个数] = {{},{},...,{}}
#include <iostream>
#include <string>
using namespace std;struct Student{string name;int age;float score;
};int main(){struct Student students[3]={{"liming",14,99.f},{"zhangsan",15,100.f},{"lisi",16,98.f}};for(int i=0;i<3;i++){cout<<students[i].name <<students[i].age <<students[i].score <<endl;}//system("pause");return 0;
}

结构体指针

利用操作符 -> 可以通过结构体指针访问结构体属性
#include <iostream>
#include <string>
using namespace std;struct Student{string name;int age;float score;
};int main(){struct Student students[]={{"liming",14,99.f},{"zhangsan",15,100.f},{"lisi",16,98.f}};struct Student s1={"张三",25,100.f};struct Student *p=NULL,*q=NULL;p=&s1;cout<<p->name<<p->score<<p->age<<endl;q=students;q++;cout<<q->age<<q->name<<q->score<<endl;return 0;
}

结构体嵌套结构体

#include<iostream>
#include<string>
using namespace std;struct Student {string name;int age;float score;
};
struct Teacher {int id;string name;struct Student student;
};int main(){struct Teacher teacher;teacher.id=1000;teacher.name="fdkjahdfj";teacher.student={"liming",14,98.f};//system("pause");return 0;
}

结构体做函数参数

#include<iostream>
#include<string>
using namespace std;struct Student {string name;int age;float score;
};void print_stu(struct Student student);
void print_stu2(struct Student *stu);int main(){struct Student student={"liming",14,98.f};print_stu(student);print_stu2(&student);print_stu(student);//system("pause");return 0;
}
void print_stu(struct Student student){cout<<student.age<<student.name<<student.score<<endl;
}
void print_stu2(struct Student *stu){stu->name="zhangsan";cout<<stu->age<<stu->name<<stu->score<<endl;
}

结构体中const的使用(防止误操作)

#include<iostream>
#include<string>
using namespace std;struct Student{string name;int age;float score;
};void print_stu2(struct Student *stu);int main(){struct Student s1={"zhangsan",15,97.f};print_stu2(&s1);//system("pause");return 0;
}// 地址传递: 将函数中的形参改成指针,可以减少内存空间,而且不会复制新的副本出来
//  存在原始数据会被修改的隐患;
// 定义常量指针,指针指向的值不可以被修改;可以防止误操作;仅可以读取
void print_stu2(const struct Student *stu){ // stu->score=10;cout<<stu->age<<stu->name<<stu->score<<endl;
}

结构体案例

#include<iostream>
#include<string>
using namespace std;struct Student{string name;float score;
};
struct Teacher{string name;struct Student students[5];
};void scanf_data(struct Teacher *p);
void print_data(const struct Teacher *q);int main(){struct Teacher teachers[3];scanf_data(teachers);print_data(teachers);//system("pause");return 0;
}
void scanf_data(struct Teacher *p){for(int i=0;i<3;i++){cout<<"输入"<<i<<"个老师姓名:"<<' ';cin>>(p+i)->name;for(int j=0;j<5;j++){cout<<"输入老师所带"<<j<<"个学生信息:"<<' ';cout<<"学生姓名:"<<' ';cin>>(p+i)->students[j].name;cout<<"学生成绩:"<<' ';cin>>(p+i)->students[j].score;}}
}
void print_data(const struct Teacher *q){for(int i=0;i<3;i++){cout<<"老师姓名"<<(q+i)->name<<endl;for(int j=0;j<5;j++){cout<<"\t学生信息:"<<"姓名"<<(q+i)->students[j].name<<"成绩"<<(q+i)->students[j].score<<endl;}}
}
#include<iostream>
#include<string>
using namespace std;struct hero{string name;int age;string sex;
};
void sort(struct hero *heros,int len);int main(){struct hero heros[5]={{"刘备",23,"男"},{"关羽",22,"男"},{"张飞",20,"男"},{"赵云",21,"男"},{"貂蝉",19,"女"}};sort(heros,5);for(int i=0;i<5;i++){cout<<heros[i].age<<heros[i].name<<heros[i].sex<<endl;}//system("pause");return 0;
}
void sort(struct hero *heros,int len){for(int i=0;i<len-1;i++){struct hero temp=heros[0];for(int j=0;j<len-1;j++){if(heros[j].age>heros[j+1].age){temp=heros[j];heros[j]=heros[j+1];heros[j+1]=temp;}}}
}

黑马程序员C++学习笔记(第一阶段:基础)相关推荐

  1. “黑马程序员”视频学习笔记之面向对象基础及调试问题

    ------- Windows Phone 7手机开发. .Net培训.期待与您交流! ------- ]方法: 语法:[访问修饰符][static] 返回值类型 方法名()             ...

  2. 黑马程序员Maven学习笔记

    前言 这里是黑马程序员Maven学习笔记分享,这是视频链接. 我还有其它前端内容的笔记,有需要可以查看. 文章目录 前言 基础 Maven简介 Maven是什么 Maven的作用 Maven的下载 M ...

  3. 黑马程序员C++学习笔记<第一阶段_基础篇>

    配套视频网址: 黑马程序员:http://yun.itheima.com/course/520.html?bili B站:https://www.bilibili.com/video/BV1et411 ...

  4. 黑马程序员C++学习笔记(第三阶段核心:STL)--- 更新中

    目录 迭代器 序列式容器 vector -- 可随机访问 list -- 不支持随机访问 deque -- 动态 关联式容器 -- 红黑树 map multimap set multiset -- 废 ...

  5. 黑马程序员Javaweb学习笔记01

    该博客主要记录在学习黑马程序员Javaweb过程的一些笔记,方便复习以及加强记忆 文章目录 一 . BS架构,HTTP协议 http请求数据格式和相应数据格式 二 . web服务器 2.1 tomca ...

  6. 黑马程序员Javaweb学习笔记02【request和response】

    该博客主要记录在学习黑马程序员Javaweb过程的一些笔记,方便复习以及加强记忆

  7. 黑马程序员SSM-MyBatisPlus学习笔记

    目录 一.MyBatisPlus简介 1.1 SpringBoot整合MyBatisPlus入门程序 1.2 MyBatisPlus概述 二.标准数据层开发 2.1 标准数据层CRUD功能 2.2 分 ...

  8. 黑马程序员-C#学习笔记(二)

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- - C# 学习笔记 一.变量与表达 ...

  9. 黑马程序员C++学习笔记(第二阶段核心:面向对象)(一)

    目录 内存分区:代码区,全局区,栈区,堆区 程序运行前:代码区,全局区 程序运行后:栈区,堆区 引用--给变量起别名 注意事项 引用做函数参数 引用做函数返回值 引用的本质---指针常量(值可变,指向 ...

  10. 黑马程序员C++学习笔记

    C++基础入门 1 C++初识 1.1 第一个C++程序 1.1.1 创建项目 1.1.2 创建文件 1.1.3 编写代码 1.1.4 运行程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键 ...

最新文章

  1. php5对象复制、clone、浅复制与深复制的区别与介绍
  2. 37.数字在排序数组出现的次数
  3. Qt鼠标拖动绘制基本几何图形
  4. C#2005中如何把unicode编码的数字转化为EBCDIC编码
  5. 引用和指针自增的不同
  6. 贴片晶振脚位_贴片晶振的焊接方法和注意事项
  7. APUE 学习笔记(十) 高级I/O
  8. bulk insert
  9. 微信小程序提供 模板:template
  10. C语言期末考试知识点
  11. win10桌面便签_用这几款小众软件点缀桌面,效率与幸福感爆棚
  12. mysql列名重复_ORA-00957:重复的列名_MySQL
  13. 运筹系列63:使用ALNS求解大规模TSP问题
  14. handsome对应php文件,基于handsome主题的一些美化总结
  15. Pixracer V1.0编译固件
  16. 2022年保险从业者要考什么样的证书?RFP、CFP、AFP哪个比较好?
  17. printf 中的伪灵异事件
  18. 计算并输出学生平均成绩。
  19. Linux运维:现状、入门和未来之路【警醒自己】
  20. P2327 [SCOI2005]扫雷 - 模拟

热门文章

  1. 用ClusterSSH管理多台Linux服务器(2)
  2. 疯狂连连看之开发界面布局
  3. 07年博客迁移:心情记事
  4. Physics-based Animation 相关
  5. linux切换软件版本,使用Linux的alternatives命令替换选择软件的版本方法
  6. 自然语言处理实战-Python编程进阶
  7. 运算符——Python
  8. 数据治理的几个关键要素
  9. 大数据可视化技术价值体现在哪方面
  10. 如何设计一个大数据实时分析平台