C++入门

C++入门

1.c++引用和指针的相同和区别;

引用不可以为空,但指针可以为空。前面也说过了引用是对象的别名,引用为空——对象都不存在,怎么可能有别名!故定义一个引用的时候,必须初始化。因此如果你有一个变量是用于指向另一个对象,但是它可能为空,这时你应该使用指针;如果变量总是指向一个对象,你的设计不允许变量为空,这时你应该使用引用。

总结:指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名,引用不改变指向。

2.指针常量VS引用常量
在指针定义语句的指针名前加const,表示指针本身是常量。在定义指针常量时必须初始化!而这是引用天生具来的属性,不用再引用指针定义语句的引用名前加const。

指针常量定义”int* const pointer=&b”告诉编译器,pointer是常量,不能作为左值进行操作,但是允许修改间接访问值,即*pointer可以修改。

总结:const放到谁前面谁就不可以当左值,即不可修改;

//指针常量(地址不可改变)
int a=10;
int* const p1=&a;
//必须初始化,const加在指针名前面,代表该指针指向的地址是一个常量且不可改变(不能作为左值);

//常量指针(值不可改变)
 int a=10;
const int* p2=&a;//意为指向的内容不可改变;

3.inline与宏

在这里插入图片描述

宏函数:

# define ADD(x,y)   ((x)*(y)//宏函数

int main()
{

int a=2,b=3;

ADD(a+b,b);

return 0;

}
优点:不用调用栈,提高运行效率;但是在预编译时,直接会把函数体放到函数调用处,会增加可执行文件的大小,这一点和内联函数相似;
缺点:也就是内联函数的优点;

inline(内联函数):把定义的函数体直接展开到函数使用处;

inline void fun1(int a)
    //inline内联函数声明和定义必须放到一起
    //否则当声明展开后,因为不像调用函数那样,
    //可以直接call到函数体;
{
    cout<<a<<endl;   
}

int main()
{
    fun1(1);
    return 0;
}

相同点:用空间换时间,提高代码运行效率;但是内联函数可能会导致目标文件冗余,如果需要展开的函数实在太多,那么系统可能不会同意inline请求;

inline的优点:

1.内联可调试;

2.可进行类型安全检查或自动类型转换;

3.可访问成员变量。

可能不会同意inline请求;

inline的优点:

1.内联可调试;

2.可进行类型安全检查或自动类型转换;

3.可访问成员变量。

*另外,定义在类声明中的成员函数自动转化为内联函数。*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值