美文网首页
C++总结(1)

C++总结(1)

作者: bluewind1230 | 来源:发表于2018-01-24 22:18 被阅读0次

    1.const int *p与const * int p的区别:

    int main (){
    int a =5,b =6;
    const int *p1 = &a;//指针p1指向的是const int 类型
    //(*p1)++;                //error,指针p1指向的是常量,常量值不能修改
    
    int const*p2 = &a;//指针p2指向的也是const int 类型
    //(*p2)++;                //error,指针p2指向的是常量,常量值不能修改
    
    
    int *const p3 = &a;//指针p3指向的是int 类型,它本身是const类型
    //p3 = &b                  //ok,指针p3指向的是变量(int型)
    
    
    
    }
    

    2.有参宏问题:

    1)宏只是简单的替换,替换之后可能会出现优先级的问题,通过将宏的参数用括号括起来可以修复此问题
    2)宏的参数使用自增自减运算的时候,会出现问题,使用内联函数可以解决此问题;

    上面两者的对比:

    const定义的有类型,define定义的没有类型;
    const在编译的时候分配内存,define在编译的时候不分配内存,只是进行替换

    const定义的常变量的作用域范围为该变量的作用域范围,
    define定义的常变量的作用域范围为它的定义点到程序结束,或者用undefine取消

    3.newdelete的用法

    new int ;开辟一个存放整数的存储空间,返回一个指向该空间的地址(指针)(int *型),
    new int (100)开辟一个存放整数的存储空间,并指定初始值为100,返回一个指向该空间的地址
    new int [100]开辟一个存放100个整型字节大小的空间,并返回一个指向该空间的地址
    obj *objects = new obj [100]创建100个动态对象
    delete [] objects;

    int *pbuf = new int [15]
    delete [] pbuf

    int *pNum = new int ('hello')分配一个整形空间并初始化
    delete pNum

    4.在c语言中函数重名就会出现编译错误,而在C++中:

    1):函数名可以same
    2):参数个数,类型,参数顺序必须不同

    void fun (int n1,int n2,int n3,int n4,int n5)
    {}
    fun(1,2);//如果没有给出后续参数,则上面的n3,n4,n5必须赋予初值(比如说都赋予了0),左边才可以这么写,此时就默认为fun(1,2,0,0,0)
    
    

    相关文章

      网友评论

          本文标题:C++总结(1)

          本文链接:https://www.haomeiwen.com/subject/cqlpaxtx.html