<C++> 基础

一.标准

1.输入:cin >> 变量名;

2.输出:cout << 变量名;

3.换行并清空缓冲区:endl

4.头文件:#include<iostream>

输入输出流头文件 C++中的头文件都不用加.h

5.命名空间:using namespace std;

打开命名空间 标准C++库中的所有组件都是一个被称为std的名字空间中声明和定义的

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int a;
 7     char b;
 8     cin >> a >> b;
 9     cout << a << " " << b << endl;
10 
11     return 0;
12 }

二.作用域 命名空间

1.不同作用域的变量可以重名 使用时 用的是离的近的 作用域小的

2.作用域运算符:::

如果前面没有类名 命名空间名字代表全局的

 1 #include<iostream>
 2 using namespace std;
 3 
 4 namespace Bird
 5 {
 6     int nAge = 100;
 7 }
 8 
 9 namespace Person
10 {
11     int nAge = 200;
12 }
13 
14 using namespace Bird;
15 
16 int main()
17 {
18     cout << nAge <<endl;
19     cout << Person::nAge <<endl;
20 
21     return 0;
22 }

注:::的前面可以放命名空间的名字 类名 或者什么都不放

三.动态分配内存和释放

1.创建:指针变量 = new 数据类型;

注:new也是在堆区分配空间

1 int* p = new int;
2 cin >> *p;
3 cout << *p;

2.删除:delete 指针变量;

1 delete p;
2 p = 0;

注:这个是把p指向的空间删了 但是指针还在 还装着原来的地址

3.举例应用:

①一维数组:

1 int* arr = new int[3];
2 delete[] arr;
3 arr = 0;

②二维数组:

1 int (*arr)[3]= new int[2][3];
2 delete[] arr;
3 arr = 0;

注:在删除数组的时候 不管是几维的 只写一个中括号就可以了

③特别注意:在new的时候 []不要打成() !!!

1 int* arr = new int(10);

比如说这行代码 代表的是分配了一个空间 并且用10把这个空间初始化了

如果让arr[1] = 100的话就会崩 因为越界了 操作了不属于你的内存空间

所以因此我们也get到了一个新的初始化的方法:

1 int b(100);

这行代码执行完 b就是100了

四.范围for(C++11新标准)

1.自动遍历数组 直到最后一个元素:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int arr[10] = {0,1,2,3,4,5,6,7,8,9};
 7     for(int nVal : arr)
 8         cout << nVal << endl;
 9 
10     return 0;
11 }

nVal是一个值 即nVal→arr[i]

把每一个arr中元素的值装到nVal中 遍历一次装一个 会自动的遍历到最后

如果想控制数组的话还是要用for循环int i的那种方法去控制

2.auto:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int a = 100;
 7     auto b = a;
 8 
 9     return 0;
10 }

那么b就是int类型的 auto会自动识别对应的类型 所以可以在for循环中去用auto

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int arr[10] = {0,1,2,3,4,5,6,7,8,9}; 
 7     for(auto nVal : arr)
 8     {
 9         cout << nVal << endl;
10     }
11 
12     return 0;
13 }

五.bool布尔类型

1.bool类型占一个字节 而Win32中的BOOL类型是把int重命名占4个字节

2.返回类型:可以用于只有两种情况的时候

①true 1

②false 0

3.如果函数返回值通常是bool类型 代表这个函数是否执行成功

在写if()括号中的判断条件的时候 一定要注意些两个等号 不要丢等号

如果是一个等号 狠可能就进到if中了(0→假 非0→真)

六.string

1.直接看段代码:这段代码是错的错的错的!!!

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     char* pName = new char[10];
 7     pName = "123456789";
 8     cout << pName << endl;
 9     delete pName;
10 
11     return 0;
12 }

pName并不是存到分配的空间中去了

pName一开始指向被分配的空间 然后又让pName指向了字符常量区

那么一开始分配的空间就找不到了 再delete就不能删了 会崩 因为字符常量区不让删

所以字符串的赋值一定不能用等号!!!

字符串的赋值用:strcpy_s(地址空间,长度,"你想存的字符串");

注:初始化和赋值的区分 就在于:定义的时候就给他一个值 就叫初始化

2.字符串的简单应用:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     string str;
 8     str = "aaa";
 9     cout << str << endl;
10 
11     string str1;
12     str1 = str + "111";
13     cout << str1 << endl;
14 
15     str1 += "222";
16     cout << str1 << endl;
17 
18     cout<< (str == str1) << endl;
19     return 0;
20 }

注意:

①C++中定义字符串可以用string 非常方便 但是有头文件:#include<string> 没有.h

②字符串的拼接可以直接用+号

③可以如18行一样比较 这个比较结果为0(不等) 相等的话输出结果为1

posted @ 2018-05-20 16:00  Aaaaaalei  阅读(185)  评论(0编辑  收藏  举报