zoukankan      html  css  js  c++  java
  • C++复习笔记(1)

    复(su)习(cheng)一下c++。

    1. 函数

    函数重载:允许用同一函数名定义多个函数,但这些函数必须参数个数不同或类型不同。

    函数模版:

    (应该是跟java的泛化类似,内容待扩展)

    template <typename T>
    T min_test(T a, T b) {
        return a<b?a:b;
    }
    
    int main() {
        cout<<min_test(1.2, 1.1)<<endl;
        cout<<min_test<int>(2,3)<<endl;
        return 0;
    }

    大概就是这么个意思。T代表一个位置的数据类型。利用函数模版定义的函数,既可以自动识别类型,也可以指定类型。指定类型应该是可以不完全指定,但是必须按顺序。

    2. 数组

    字符数组:

    char str[10]="book";

    这样定义的数组,str的前4个位置分别是book,后面的位置都是。

    cout<<strlen(str)<<" "<< sizeof(str)<<endl;

    这行命令将输出:4 10。

    strlen()是函数,统计到时就结束。sizeof()是运算符,计算数据空间的大小。

    3. 指针和引用

    总的来说,*和&各有两个意义:

    int a=1;
    int* b=&a;
    int& c=a;
    *b=2;

    第二行的*代表声明的变量类型为int的指针,&代表取地址。第三行的&代表引用。第四行的*代表解引用。

    数组名代表数组第一个元素的地址。

    int a[3]={1,2,3};
    int* p3=a;
    cout<<*p3<<" "<<*(p3+1)<<endl;

    指向数组的指针和指针数组:

    int (*p1)[4];
    int *p2[4];

    p1是指向4个元素的数组的指针,p2是一个4个指针的数组。

    字符串与指针:

    char *s1 = "hello";
    cout<<s1<<" "<<*(s1+1)<<endl;
    char s2[10]="abc";
    cout<<s2<<" "<<*(s2+2)<<endl;

    输出结果是:

    hello e
    abc c

    s1和s2基本上可以看成是等价的,形式上来看。

    函数指针:

    int pa(int x) {
        return x+1;
    }
    
    int pb(int x) {
        return x-1;
    }
    
    int main() {
        int (*fp) (int x);
        fp = pa;
        cout<<fp(5)<<endl;
        fp = &pb;
        cout<<fp(5)<<endl;
    
        return 0;
    }

    声明就是跟fp那种方法生命。在赋值的时候,注意函数名其实就已经表示了该函数的地址,所以加不加取地址符都一样。

    常引用不能通过引用对目标值进行修改。

    4. 结构体,共用体,枚举

    共用体的不同数据类型共用一段内存空间。

    结构体和共用体占用的内存计算(没搞懂,待补充)

    5. 预处理

    宏定义:

    简单宏定义中,替换部分是表达式的时候,要加括号。带参数的表达式也要各种加括号。

    复合语句的宏在预处理时会被展开,所以可以用do {} while(0)来把复合语句变成单一语句。

    条件编译中,定义的宏如果只作为条件,可以没有内容。

    (大概先这样,慢慢补充)

  • 相关阅读:
    MyEclipse中选择一行的快捷键
    myeclipse选中一行的内容,快速移动复制到某一行。
    为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
    webpack-dev-server
    webpack-clean-webpack-plugin
    --save-dev和--save的区别
    extract-text-webpack-plugin 的使用及安装
    this 指向详细解析(箭头函数)
    CSS三:CSS的三种引入方式
    Webpack中的css-loader 和style-loader
  • 原文地址:https://www.cnblogs.com/wangzhao765/p/9107980.html
Copyright © 2011-2022 走看看