c语言基础题

指针和引用:
引用是一个对象的别名,没有分配内存,但指针有内存;引用必须初始化,与对象绑定,但指针可以不初始化;引用初始化后不能改变与其绑定的对象,但指针可以指向新的地址。

int a,b,*p,&r=a;//正确
r=3;//正确:等价于a=3
int &rr;//出错:引用必须初始化
p=&a;//正确:p中存储a的地址,即p指向a
*p=4;//正确:p中存的是a的地址,对a所对应的存储空间存入值4
p=&b//正确:p可以多次赋值,p存储b的地址

作者:xmqv
链接:https://www.zhihu.com/question/37608201/answer/72766337
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

const对象必须初始化,且不能改变其值

int a = 10;
const int *p;//对象为*p,*p的值不能改变,但p的值可以改变
p = &a;
*p = 3; // 错误,通过此指针改变指向的值
int b = 5;
p = &b; // 正确

int c = 10;
int * const p = &c;//对象为p,p必须初始化,且p不能改变
*p = 5; // 正确
int d = 5;
p = &d; // 错误,指针变量不能改变

this指针:实例化一个对象后产生的,指向对象本身;是成员函数的一个参数,将对象的地址传递给了成员函数。
只能在成员函数中使用,不能在全局函数、静态函数中使用this。对于成员函数默认的第一个参数为T* const this,如:

class A
{
public:
    int func(int p);//对编译器来说,相当于int func(A* const this, int p)
};

this指针生命周期与函数的参数一样,从成员函数的开始构造,成员函数的结束清除。
this指针可能因编译器的不同存放在不同的位置。

类在实例化时,值分配类中的变量空间,并没有为函数分配空间,只有包含虚函数的类,才会有虚指针指向虚表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值