C++基础01 简介、实例、cin和cout、注释、常见数据类型、结构体、共用体、枚举、指针和引用、分支、循环、函数、函数指针、函数重载

一、C++简介

C++的特性
1、速度
C++是C的拓展版本,C的部分非常底层,极大的提高了python和java等高级语言无法提供的速度
2、静态类型
由于C++是一种静态类型的编程语言
3、面向对象
C++支持面向对象的程序设计,可以通过创建对象将这些复杂的问题分成较小的集合
4、标准库(标准模板库STL)
可以使用C++包含的标准库进行拓展使用,这些库包含有效的算法,可以在编写项目的时候使用这些算法
大大节省了编程工作,避免浪费时间制造轮子

二、hello实例

#include <iostream>

int main() {
    /*
     * ::调用对应库的函数
     * endl代表换行
     * << C++中代表对运算符进行重载 代表输出流
     * */
    std::cout << "hello kawin" << std::endl;
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

using namespace std;
加上这个后就不需要std::cout,直接cout

三、cin和cout

1、标准输入设备
cin是标准输入设备,连续从键盘读取数据,>>为提取符
cin的使用
cin >> 变量 (空格作为结束符)

2、标准输出设备
cout是标准输出设备,<<为插入运算符
cout的使用
cou << 输出项 << endl (endl为换行符)

四、注释

// 单行注释
/* */ 多行注释

五、常见数据类型

bool			布尔类型
false 0 	true 非零

char			字符类型
保存字符集的一个字符

int				整数类型
intsigned intunsigned intshortlonglong long

float double	浮点类型
enum			枚举类型
int*			指针类型
char[]			数组类型
double&			引用类型
类

string			字符串类型

std::string str1="hello";
std::string str2="kawin";
std::cout << str1+str2 << std::endl;

auto 关键字
自动推断变量的类型
 

六、结构体数据类型

结构体的基本概念
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
语法
struct 结构体名{
	结构体成员列表
};


#include "iostream"
#include "string"

using namespace std;
/*
 * 结构体创建变量的三种方式
 * struct 结构体名 变量名
 * struct 结构体名 变量名={成员1值,成员2值...}
 * 定义结构体时顺便创建变量名,用点运算访问成员变量
 * */
// 1、直接定义
struct student{
    string name;
    int age;
    double score;
}s3;
//可以在结构体后面赋值
int main() {
    /*
     * ::调用对应库的函数
     * endl代表换行
     * << C++中代表对运算符进行重载 代表输出流
     * */
    std::cout << "hello kawin" << std::endl;
    std::cout << "Hello, World!" << std::endl;

    std::string str1="hello";
    std::string str2="kawin";

    std::cout << str1+str2 << std::endl;
//    2、通过学生类型创建具体学生 然后依次赋值
    struct student s1;


//    声明同时赋值
    struct student s2={"张三",20,90.2};

    student student;
    student.name="zhangsan";
    student.age=18;
    student.score=90.2;
    cout << student.name<<","<<student.age<<","<<student.score << endl;
    return 0;
}

七、共用体

共用体(union)是一种数据格式,可以存储不同的数据类型,但只能同时存储其中的一种类型
也就是说,共用体只能存储intlongdouble char,结构体可以同时存储intlongdouble char
共用体只能存一个,与结构体类似,但是含义不同
#include "iostream"

using namespace std;
struct Product{
    char priductName[20];
    int type;
    union id{
        int id_int;
        char id_chars[20];
    }id_val;
};
int main(){
    Product product;
    cin >> product.priductName;
    cin >> product.type;
    if (product.type==1){
        cin >> product.id_val.id_int;
        cout << product.priductName << ","<< product.type << "," << product.id_val.id_int;
    } else{
        cin >> product.id_val.id_chars;
        cout << product.priductName << ","<< product.type << "," << product.id_val.id_chars;
    }


    return 0;
}

八、枚举类型

由用户定义的若干枚举常量的集合,常量是不可以修改的
定义格式:
枚举类型的定义格式:
enum<类型名>{<枚举常量表>}

#include "iostream"

using namespace std;

enum color{
    red,
    green=2,
    blue
};
int main(){
    color c;
//    枚举其实就是个整数
//    枚举变量只能用枚举值,枚举值可以赋值给整数 但是整数不可以赋值给枚举值
    cout << green << " " <<blue << " " <<red<<endl;
    c=red;
    cout << c << endl;
    int a=red;
    cout << a << endl;
    return 0;
}

九、指针和引用

指针让程序员可以直接对内存进行操作的工具,这样的工具就是一把双刃剑,一面可以实现一些非常优化的程序,另一面会导致一些难以调试的错误。
int *p=&a;
p的指针指向a
取出p指针地址上的值 用*p
*p也叫解引用
void swapint(int *a,int *b){
    int temp=*a;
    *a=*b;
    *b=temp;

};
int main(){
    int num=3;
    int *p=&num;
    cout << num << "值num" << endl;
    cout << "地址的值为" << p << "值为" << * p <<endl;

    int a=3;
    int b=6;

    swapint(&a,&b);
    cout << a << " " << b << endl;
    int *c=&num;
    int *d=c;
    *d=10;

    cout << *c << " " << *d << endl;
    return 0;
}

引用是C++对C语言的扩充
变量名称是变量附属在内存位置中的标签
引用可以理解为是在内存位置中的第二个标签,因此可以通过原始变量名称或引用来访问变量的内容
引用就是某一变量的一个别名,对引用操作和对变量直接操作完全一样

语法
类型标识符 &引用名=目标变量名;
int changeA(int a){
    int &r=a;
    r=10;
    return a;
}
int main(){
    int changa=8;
    int res=changeA(changa);
    cout << res << endl;
    return 0;
}

十、分支语句

//
// Created by KerwinWan on 2023/4/13.
//
#include "iostream"

using namespace std;

int main(){
//    分支语句
    int a,score,type;
    cin >> a;
//    单分支
    if (a>100){
        cout << "ok" << endl;
    }

//    双分支
    if (a>0){
        cout << "hello" << endl;
    }else{
        cout << "no" << endl;
    }

//    多分支
    cin >> score;
    if (score>=70){
        cout << "优秀" << endl;
    }else if(score>=60){
        cout << "合格" << endl;
    }else{
        cout << "不合格" << endl;
    }

//    switch语句 语句中的expression必须是一个数值类型数据(包括字符类型)
    cin >> type;
    switch (type) {
        case 1:
            cout << "1" << endl;
            break;
        case 2:
            cout << "2" << endl;
            break;
        case 3:
            cout << "3" << endl;
            break;
//            其他情况走default 如果不break default就要跟着1 2 3运行
        default:
            cout << "other" << endl;
    }


    return 0;
}

十一、循环语句

//
// Created by KerwinWan on 2023/4/13.
//
#include "iostream"

using namespace std;

int main(){
//    while 只要给定的条件为真,while循环会重复执行目标语句
    int i =10;
    while(i>5){
        i--;
        cout << i << endl;
    }
    i=10;
//    do...while 循环会确保至少执行一次循环
    do{
        i--;
        cout << i << endl;
    }while(i>10);

    /*
    * for循环语句
     for(init;condition;increment){
     statement(s);
     }
     * 1、init会首先被执行,只会执行一次,允许声明并初始化任何循环控制变量
     * 2、判断condition
     * 3、执行完for循环主题后回到increment,更新循环控制变量
     * 4、再次判断条件
    * */
    int sum=0;
    for (int j = 0; j <= 100; j++) {
        sum+=j;
    }
    cout << sum << endl;
    return 0;
}

十二、函数

函数的一般形式
return_type function_name( parameter list){
	函数体
}

函数的参数
传值调用,该方法将参数的实际值传给形式参数,修改函数内的形式参数对实际参数没有影响
指针调用,该方法将参数的地址赋值给形式参数,在函数内,该地址用于访问调用中要用到的实际参数,修改形式参数会影响到实际参数
引用调用,该方法把参数的引用赋值给形式参数,在函数内,该引用用于访问调用中要用到的实际参数,修改形式参数会影响到实际参数

调用函数时,如果未传递函数的值,则会用默认值,指定了对应的值,则会忽略默认值,使用传递的值
//
// Created by KerwinWan on 2023/4/13.
//
#include "iostream"

using namespace std;

int sum(int a,int b=20){
    return a+b;
}

void sum(int &a,int &b){
    return ;
}
int sum1(int a,int b){
    return a+b;
}

int main(){
    cout << sum(10) << endl;
    return 0;
}

十三、函数指针

#include "iostream"

using namespace std;

int sum11(int a,int b){
    return a+b;
}

int main(){
//  如果在程序中定义了一个函数,那么编译的时候就会给这个函数代码分配一段存储空间,这段存储空间的首地址成为这个函数的地址
// 函数名表示的就是这个地址,既然是地址所以可以定义一个指针变量来存放,这个指针变量就叫做函数指针变量,简称函数指针
    int(*p)(int,int);
    p=sum11;
    cout << (*p)(10,20) << endl;
    return 0;
}

十四、函数重载

函数重载即函数名相同,函数形参列表不同的一类函数,称为函数重载
注意函数重载的依据只有形参列表不同
函数的返回类型不同 不可以作为函数重载的依据
参数列表又叫参数标签,包含参数的类型、参数的个数、参数的顺序,只要有一个不同就叫做参数列表不同
int sum11(int a,int b){
    return a+b;
}
int sum11(int a,int b,int c){
    return a+b;
}
int sum11(int a,int b,int c,int d){
    return a+b;
}
int sum11(char a,int b){
    return a+b;
}
int sum11(int b,char a){
    return a+b;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值