C++总结(1)

2018-01-24  本文已影响0人  bluewind1230

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)

上一篇下一篇

猜你喜欢

热点阅读