zoukankan      html  css  js  c++  java
  • <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

  • 相关阅读:
    裸眼 3D 技术是什么原理?
    裸眼3D全攻略3:拍摄3D—瞳距、镜距、视角偏转与空间感
    JFreeChart DateAxis用法
    remount issue on android 7.0
    获取WebView加载的网页内容并进行动态修改
    android自定义Activity窗口大小(theme运用)
    Android5.0免Root截屏,录屏
    coursera上的软件安全课程的课后阅读补充
    java,C#接口与C++的虚基类
    单元测试之C/C++
  • 原文地址:https://www.cnblogs.com/Aaaaaalei0612/p/9063650.html
Copyright © 2011-2022 走看看