C++

1.C语言的产生

C++是C语言的超级, 事实上,任何合法的 C 程序都是合法的 C++ 程序。C++ 也是目前嵌入式 ( 无人驾驶 ) 的首选语言。

2.C++的优缺点

优点:

	1.实现了面向对象程序设计。在高级语言当中,处理运行速度是最快的,大部分的游戏软件,系统都是由C++来编写的
	2.功能强大,嵌入式首选
	3.C++加上严格的codereview可以用来开除猪一样的队友,这是所有其他语言都不具备的功能

缺点:

	1. 学习门槛高、难学
	2. 知识点繁杂,

3.C++语言和Python的比较

C++:

#include <iostream>

int main(){
    
    int x = 5;
    std::cout << x << std::endl;
    
    return 0 ;
}


	编译型语言:是需要先编译后运行的语言 编译后通过链接,结合其他依赖库,然后生成机器码()可执行文件,以后在运行,无需编译
	2.运行效率高:C++ 可以直接操作内存 指针。


python
python的代码:
	print("aaa")
	print("aaa")
	print("aaa")
	@
	a = 3 / 0 
	
	print("aaa")
	print(5)


解释型语言,也就是弱类型,不需要经过编译,是一边解释一边执行,,由于底层封装了很多库供程序使用,开发起来便捷,很好的跨平台,适合写小工具小程序

4.Hello Word

代码:
#include<iostream>   
 //include : 引入输入输出库
  
int main(){
std::cout<<"Hello  word" <<std:endl;
	return 0;
}     
//int main(){} : 主函数入口
//std:: .... 输出打印
//return 0 : 函数返回值,一般0 表示正常执行返回。

5.main 函数的解释

int main(){
return 0;
}
main 函数是C++程序的入口函数  C++要求main函数的返回值得类型是int    0表示正常退出

6.注释

c++采用 // 和 /* */ 实现单行和多行注释。

7.数据类型

整数:int
单精度浮点数 :float
双精度浮点数:double
字符:char
字符串:string
布尔:bool
short
long
long long

c++提供sizeof()函数来获取某种数据类型占用的空间大小。

8.变量

1).C++是强类型语言 任何变量在使用前必须先声明,并且在声明的时候必须要指定该变量的数据类型,即该变量未来能够存储的数据类型。
除了变量 | 对象的声明初始化之外,其他的逻辑代码(需要经过调用 、 运算)都需要在函数内部编写。

int main(){

//先声明
int age ;
double price;

//后初始化
age = 10 ;
price = 20.3;

//声明及初始化
int age = 20 ;

return 0 ;
}




变量声明以及初始化常用手法:

 x int age ; //未初始化
 int age = 21 ; // C 方式初始化
 int age (21); //构造方法初始化
 int age {21} ; //c++ 11标准开始的方式

2).变量命名规则

1.  可以包含字母 、 数字 和下划线
2. 必须以字母或者下划线开始

3).常量

常量的值不允许变更,C++中的常量的声明需要使用 const 关键字,而python中的常量默认约定是全大写表示。
例:
	int main(){
    
    const double pi {3.1415926};
    const int months_in_year{12};

    pi = 2.5 ; //将会出现编译错误
    
    return 0 ;
}

4).变量长度

sizeof 除了可以作用于类型身上之外,也可以作用于变量身上。

#include<iostream>

int main(){
   
    double a = 20.0;
    sizeof(a); //8

    sizeof(int); //4
    
    return 0 ;
}

5).输入和输出

python:  python的输入输出是input  和 print
c++:  std::cin   和 std::cout 来操作输入输出 。 C++的输入输出,需要导入 iostream 库 。

输出:
	std::cout << "Hello" << std::endl;
输入:
    int age ;
    std::cin >> a

9.条件与循环

1)条件判断

if:

#include <iostream>

int main (){

std::cout << "请输入此次考试的成绩:" << std::endl;

int score ;
std::cin >> score;

if( score  >  90){
     std::cout << "可以休息一天" << std::endl;
}else if(score > 80){
     std::cout << "可以休息半天" << std::endl;
}else{
     std::cout << "乖乖去写作业" << std::endl;
}

return 0 ;
}




switch:	实际上switch和 if 语句块很相似, 它是完全的**等价条件判断**,但是一旦满足某个case的条件,那么其他**case 就不会再进行判断。**

#include <iostream>

int main (){
    std::cout << "请输入此次考试的成绩评级" << std::endl;
	char level ;
    std::cin >> level;
    switch (level){
        case 'A':
            std::cout << "优秀" << std::endl;
            break;
        case 'B':
            std::cout << "良好" << std::endl;
            break;
        case 'C':
            std::cout << "及格" << std::endl;
            break;
        case 'D':
            std::cout << "仍需继续努力" << std::endl;
            break;
        default:
            std::cout << "输入错误。" << std::endl;
            break;![在这里插入图片描述](https://img-blog.csdnimg.cn/20200419105357942.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1dG9uZ2hlaWhlaTY2Ng==,size_16,color_FFFFFF,t_70)
    }
	return 0 ;
}

2)运算符操作
关系运算符 : 表示大小、相等操作的运算符,python和c++表示方法是一样的
关系运算符
逻辑运算符:有时候需要对多个条件进行一起判断

逻辑运算符
3)三元运算符:一般来说,非真即假的情况下,如果表达式比较简单,通常会采用三元运算符来实现

#include <iostream>

int main (){

int score;
std::cout << "请输入此次语文考试的成绩:" << std::endl;

std::cin >> score;

/*
    //python的三元表达式:

    result = 'A' if 100 > 90  else 'B'
    print(result)
*/

//c++
char result = score > 90 ? 'A' : 'B';
std::cout << "您的语文成绩评级为:" << result <<std::endl;

return 0 ;

}

10 循环控制: 如果需要让某件事重复执行多次,那么循环操作再合适不过了。在c++里面,循环操作有:while | do-while | for 三种实现方式 。 比如模拟路口信号灯闪烁场景
1)while

	#include <iostream>
	int main (){
	
    int count = 0 ;
 	while(count < 10){
        std::cout << "红灯还在亮着..." << std::endl;

        //单位是毫秒
        Sleep(1000);
        cout++;
    }
	return 0 ;
	}

2)continue 和 break

	#include <iostream>
	int main (){
	
    int number = 1 ;
 	while(number <= 20){
       
        if(number == 16){
        break;
    }
    
    //满足条件,表示当前的number是奇数。
    if(number % 2 != 0  ){
        continue;
    }
    
    std::cout << "当前打印的数字是: " << number << std::endl;
    
    number++;
    }
    
     std::cout << "循环已结束! "<< std::endl;
	return 0 ;
	}

3)do-while:do-while结构与while差不多,区别只在于前者是上来先执行操作后判断,后者是先判断再执行循环操

		#include <iostream>
		int main (){
		
	    int count = 0 ;  
	    do{
	        std::cout << "红灯还在亮着..." << std::endl;
	         //单位是毫秒
	        Sleep(1000);
	        cout++;
	    }while(cout < 10);
	    
		return 0 ;
	}

4).for:在众多循环语句中,for 循环是使用频率最高的一种。

	#include <iostream>
	int main (){	
	    for(int cout  = 0 ; cout < 10 ; cout ++){
	         std::cout << "红灯还在亮着..." << std::endl;
	         //单位是毫秒
	        Sleep(1000);
	    }    
		return 0 ;
	}		

11.命名空间: 它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围

1). 自定义命名空间

	#include <iostream>
	
	//深圳的张三
	namespace shenzhen{
	    string name = "张三";
	}
	
	//武汉的张三
	namespace wuhan{
	    string name = "张三";
	}
	
	int main() {
	    std::cout << shenzhen::name << std::endl;
	    return 0;
	}

2). 使用using指令: 可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。

	#include <iostream>
	using namespace std;
	
	int main(){
	    count<<"hi c++" << endl;
	    return 0 ;
	}
  1. 数组: c++的数组实际上和python的 list 差不多,都是具有下标(索引) , 稍有不同的是,python的list不区分类型,而c++的数组必须是同一类型。

    1)python的数组

    scores = [100,98,88,'zhangsan',True]
    for s in scores:
    print(s)
    

    2)c++的数组

    #include <iostream>
    
    int main() {
    int scores[]{100,95,90,88}
        for(int s : scores){
            std::cout << s << std::endl;
        }
        return 0 ;
    }	
    

    3)声明和初始化

    数组是一系列相同类型的元素,放置在连续的内存位置,数组中的元素都可以通过索引来单独操作它们。 若查看某个变量存储地址可以使用 **取地址符 &**
    
     声明:仅仅声明,而没有初始化的数组,内部的元素无法得到保证,系统会随机进行赋
    	#include <iostream>
    
    	int main (){
    	    
    	    int scores[5];
    	    
    	    //这里遍历打印出来,数组的元素是随机的。
    	    for(int s : scores){
    	        std::cout << "s=" <<s << std::endl;
    	    }
    		return 0 ;
    		}	
    初始化
    	int main(){
        //数组类型 数组名称  [元素个数]{初始化列表}
    
        //1. 声明后再初始化
        int scores [5];
        scores[0] = 11;
        scores[1] = 22;
        scores[2] = 33;
        scores[3] = 44;
        scores[4] = 55;
    
    
        //2. 声明并初始化
        int scores [5]{100,89,95,70,80};
    
        int socres [10]{88,75}; //剩下的都会以0占位,只初始化了前两位
    
        int socres [10]{0}; // 表示10个长度的数组,每个元素都是0
    
        //3. 自动推算数组大小
        int socres[]{22,33,44,55,66}; //数组长度没有指定,根据后面初始化长度来推断。
    	return 0 ;
    }
    

4)访问数组:

1) 获取数组中的某个元素
	数组是具有下标(索引)的容器,可以使用下标 (索引)来获取 , 下标(索引)从 0  开始。型如: 数组名称[元素索引]
			
#include <iostream>

int main(){

//声明并初始化数组
int scores [5]{100,89,95,70,80};

std::cout<<"数组的第一个元素是: "<< scores[0]<<std::endl;
std::cout<<"数组的第二个元素是: "<< scores[1]<<std::endl;
std::cout<<"数组的第三个元素是: "<< scores[2]<<std::endl;
std::cout<<"数组的第四个元素是: "<< scores[3]<<std::endl;
std::cout<<"数组的第五个元素是: "<< scores[4]<<std::endl;


//越界,不会报错,但是输出内容不是我们想看到的
std::cout<<"数组的第一个元素是: "<< scores[5]<<std::endl; 

//修改指定位置的元素
scores[0] = 66;

return 0 ;

}

2).遍历数组
c++的数组,并没有提供获取长度的方法,所以不能直接遍历。一种是直接指定遍历的长度,一种是通过代码计算出数组的长度 ,一种是使用c++11提供的基于范围的for循环

#include <iostream>

int main(){
    //定义数组
    int  scores[]{100,95,97,88,85,80,75};

    //直接指定数组
    for(int i = 0; i < 7; i++){
        std::cout << scores[i] << std::endl;
    }
    
    //手动计算数组长度
    int length = sizeof(scores) / sizeof(int);
    for(int i = 0 ; i < length; i++){
         std::cout << scores[i] << std::endl;
    }

    
    //+++++++++++++++++++++++++++++++++++++++++++++++++++
    
    //c++11 提供的for循环 
    for(int score : scores){
          std::cout <<cores[i] << std::endl;
    }
    return 0 ;
}

3)多维数组
	数组里面的元素存储的还是数组,即可称之为多维数组。二维数组是常见的多维数组,再多维度的数组阅读起来就稍微有点复杂了。二维数组的操作实际上实际上和一维数组并没有多大区别。
	
数组类型 数组名称x; x可以认为是有多少行 , y可以认为是有多少列。多维数组无法进行长度推断,所以具体到行列的长度

13.C++ 风格字符串
C++ 标准库提供了 string 类类型,支持上述所有的操作,另外还增加了其他更多的功能。需要引入 #include ,由于string类声明在命名空间 std ,所以在使用的首要注意 命名空间的联合使用 。

//引入string库
#include <string>

using namespace std;

int mian(){
    
    string s1;
    string s2 {"北京"};
    string s3{s2};
    
    string s4 = "你好";
    
    s1 = s3;
    return 0 ;
}

14.C++风格字符串操作
1)拼接字符串 C++拼接字符串使用"+"’

#include<string>
using namespace std;

int main(){
    string part1 {"c++"};
    string part2 {" is a powerful"};

    string sentence ; 
    sentence = part1 + part2 ;
    return 0 ;
}	

2)获取指定位置的字符
可以使用[]和 at()操作字符串

#include<string>
using namespace std;

int main(){
    string s1 {"i love c++"};

    cout << s1[3]<<endl;
    cout << s1.at(0) << endl;
   return 0 ;
}

3)遍历字符串

#include<string>
using namespace std;

int main(){
    string s1 {"abcdef"};

    for(char s : s1){
        cout << s << endl;
    }

    for(int s : s1){
        cout << s <<endl;
    }
	return 0 ;
}

4)字符串比较(字符串也是可以比较大小的)

#include<string>
using namespace std;

int main(){

    string s1{"Apple"};
    string s2{"Banana"};
    string s3 {"kiwi"};
    string s3 {"apple"};
    string s3 {s1};

    s1 == s5 // true
    s1 == s2 // false
    s1 != s2 // true
    s1 < s2 // True
    s1 > s2 // false
    s1 == "Apple" // false
        
	return 0 ;
}	

5)截取字符串

	#include<string>
	using namespace std;

	int main(){

    substr(开始索引, 截取长度);

    string s1 {"This is a test"};
    cout << s1.substr(0 , 4) ; // This
    
	return 0 ;
}

6).获取字符(字符串)在字符串中的索引
	
	
#include<string>
using namespace std;
int main(){
    find(搜索的字符)

    string s1 {"This is a test"};
    cout << s1.find("This") ; // 0 
    cout << s1.find("is") ; // 2
    cout << s1.find("test") ; // 10 
    
   return 0 ;
}
7)获取字符串长度
length() : 返回字符串长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值