C++总结(1)

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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容