C++学习

注:只是需要注意的和比较容易混淆的点,系统的学习需要看书或者找教程。

1.c++是面向对象的编程,主要有四大特点:封装,继承,多态,抽象。

2.包含输入输出流的方法,属于标准库,用< >,如果是别的头文件用 “ ”

#include <iostream>
#include "xxxx.h"

3.使用命名空间std免去输入输出的前缀,原本应该是std::cout,有了声明就可以直接cout了。

更详细的解释Why is 'using namespace std' used - C++ Forum

using namespace std;

4.返回类型不是void的函数必须要有一个返回值,但是主函数main()里,可以不return,主函数会自动隐式的加入一个return 0

5.标准输出cout,单引号表明单个字符,而双引号则创造一个字符串。和python不一样。<<像屏幕传入字符

cout<<"wacebb"<<endl;

7.endl相当于'\n'。endl在行后面插入一个换行符。

8.对象是类的实例。

9.//单行注释。/*......*/多行注释。

也可以通过#if 0   的方式进行注释 0换成1 就是执行

                  #endif 

    cout << "Hello World1!\n";
#if 0
    cout << "Hello World2!\n";
#endif
#if 1
    cout << "Hello World3!\n";
#endif

10.每一句的结尾必须有;和python不同。

11.创建枚举,需要使用关键字 enum。

enum color { red, green=5, blue };

12.定义变量时,可以先定义,后初始化。不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。

13.运算符 / 取整,% 取余。

14. a++ 就是 a=a+1。

15.条件运算符:condition ?X:Y      condition为真 则?为x,否则为y。

16.定义字符串的两种方式:1)string 2)char

    string tt = "gdsghsdh";
    char t[] = "sdfgashdfasfh";
    cout << tt << endl;
    cout << t << endl;

17.字符串的面值的实际长度要比他的内容多1,因为系统会在字符串的结尾添加一个‘\0’(空字符)。比如:‘a’和“a”是不一样的,“a”字符串其实多一个\0。

18.&为取地址符号,常用于引用和指针,*常用于指针,*b输出的是地址上的值,b输出的是地址。

#include <iostream>
using namespace std;
int main()
{
	int a=10;
	int &b=a;//只是相当于给了一个别的名字,也就是引用。
	int *c=&a;//定义指针,也可以先int *c 定义一个空指针。
    cout <<a<< endl;
	cout <<b<< endl;
	cout <<&b<< endl;
	cout <<c<< endl;//c输出的是地址
	cout <<*c<< endl;//*c输出的是地址上的值
	*c=100;#给指针赋值,*c赋值,c赋地址,如:c=&b
	cout <<c<< endl;
	cout <<*c<< endl;
	cout <<a<< endl;
    return 0;
}

c=&a 是c的值改变了,c指向了a。*c=a,指针c本身没有改变,而是指针指向的地址上的值改变了。

定义空指针时候最好int *p=0 不容易出错。

19.string类型相加时候,不可以直接把字面值直接相加减。

string s= "hello" + "world" //字面值指的就是" "里面的内容

20.字符中的for循环,如果想要改变 string中的值,必须把循环变量定义为引用类型。

string s="sgaggagagsgsg"
for(auto c : s)

    xxxxxx



for (auto &c : s )

    xxxxx

21.c++中的for循环

for(int a=0;a<10;a++)
 
    xxxx

22.vector表示对象的集合,其中所有对象类型都相同。()用来表示元素个数(10个1这种),{}用来表示具体的值,也可以表示元素个数(10个1)。

//定义
vector<int> v1(10)//10个int的值,而不是一个10.
vector<int> v1{10}//表示vector内容是一个10.
vector<int> v1(10,1)//10个1
vector<int> v1{10,1,4,34}//四个值,分别为10 1 4 34
vector<string> v1(10,'hi')//10个'hi'
vector<string> v1{10,'hi')}//10个'hi'
vector<string> v1('hi','wacebb')//wrong,()用来定义个数的形式,不能放具体的值,
vector<string> v1{'hi'}
vector<string> v1{'hello','wace','bb'}

23.让程序运行完不直接退出,而是按键退出

在最后加system("pause")

24.一个字节8位。也就是8个比特。一个字一般的存储结构是4个字节,也就是32个比特。

25.整体规定输出小数点的位数

cout.self(ios::fixed);
cout.self(ios::showpoint);
cout.precision(2);//保留两位小数

26.单个规定输出小数点位数

cout<<setprecision(4)<<value<<endl;//4位有效小数

27.c++的字符和字符串类型

string a=" ";
char a='';

28.17/5求商 17%5求余

29.常量定义

const int a=100;//程序里不可以修改了

30.强制类型转换

static_cast<double>(vari./const.);//转换为double类型

31.二维数组定义

int a[3][2]={{2,3},{4,5},{6,1}};

32.随机数定义

srand(int)time(0);//随机数种子,此句话是根据系统时间来设计随机数的分布,放主函数中,每次生成的随机数就会不同
a=rand%n;//0~n-1的随机数

33.c++有三种调用:传值调用,传参调用(引用调用),数组调用

//穿值
void getvalue(double var);
//传参
void getcalue(double& var);
//传数组
void getchar(int a[],int size);

34.文件io

#include<fstream>
using namespace std;

ifstream inStream;//定义流
ofstream outStream;

inStream.open("dag.dat");//打开文件
int a,b;
inStream>>a>>b>>endl;//读取文件的内容
outStream.open("333.dat");
outStream<<"a="<<a<<endl;//写入文件

inStream.close();//关闭文件
outStream.close();

35.流作为函数参数,必须传引用

void makee(ifstream& file);

36.读取一个字符

using namespace std;
char binn;
cin.get(binn);

37.for循环有两种,普通的循环和基于范围的循环

for(int i;i<10;i++)//普通的循环
{
    ...
}

//基于范围的循环
for(datatype varname:array)
{
    ...
}

for(auto i:a)//数组中的元素循环
{
    ...
}

38.定义字符串:1.使用char数组 2.使用string

//字符数组
char a[10]="....";
cin.getline(a,10);//读入

//字符串
#incluede<string>
using namespace std;
string a="....";
string a("....");
getline(cin,a);//读入

39.向量:可变长度的数组

#include<vector>
using namespace std;

vector<int> v={0,1,2};//直接定义时初始化

vector<int> a;
a.push_back(0);
a.push_back(1);
....//依次填入数据初始化

40.构造函数

构造函数用来初始化成员变量,有不同类型的构造函数,有带参数的有不带参数的构造函数。

XXX::XXX(int a,int b)
{
    ...
}

XXX::XXX():a(0),b(1)
{
    ...

}

调用方法也分为两种,直接调用和显示调用。

//调用两种
//直接调用
XXX XXX(0,0);//调用有参数的构造函数
XXX XXX;//调用无参数的构造函数,不加()

//显式调用
a=XXX(0,0);//调用有参数的构造函数
a=XXX();//调用无参数的构造函数,必须加()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值