首页 > 编程知识 正文

c语言中为什么要用指针,c语言中指针的含义是什么

时间:2023-05-03 08:26:24 阅读:41159 作者:421

调用成员函数时,会自动传递隐式参数。 此参数称为this指针,因为它是指向要对其调用函数的对象的指针,并且可以在程序中使用关键字this指针引用城镇。 this指针是c实现封装的机制,它将成员与用于处理这些成员的成员函数相关联。 例如; Location类的成员函数init定义如下:

语音位置:3360 init (intinitx,int inity )。

{

X=initx;

Y=inity;

}

其中,对x和y的引用是指在调用成员函数时引用对象中接受函数调用的成员x和y。 例如,对于以下语句:

位置a位置;

a location.init (5,2 );

调用成员函数init ()时,成员函数的this指针指向对象ALocation。 成员函数init团队对x和y的引用表示引用对象ALocation的成员x和y。 但是,成员函数init ()是怎么知道的呢? 这是由this指针完成的。

c编译器识别的成员函数init ()的定义格式如下:

语音位置:3360 init (intinitx,int inity )。

{

this-X=initx;

this-Y=inity

}

这意味着,无论c编译器访问此成员函数中的哪个类成员,它都访问this指针指向的对象中的成员。 当不同对象调用成员函数init ()时,this指针指向不同的对象,因此成员函数init ) )可以为不同对象的x和y设置初始值。 使用this指针,每个对象都可以有不同的数据成员,但处理这些数据成员的代码可以在所有对象上共享。

this指针对c程序员也很有用。 以下程序具有将成员函数assign ()添加到Locatin类中并将函数对象的状态设置为接受函数调用的对象的参数。

类位置{

隐私:

int X,y;

pubic:

语音初始化(int inity,int inity;

语音识别(位置p;

int GetX (;

int GetY (;

(;

是语音位置:3360分配(位置p )

{

if(jthis==p ) ) )。

; //obj.assign(obj )方式调用时,if语句的表达式this==p为真

else{

X=p.X;

Y=p.Y

}

}

由于同一对象之间相互分配了美丽和含义,因此此函数使用this指针来确定这种情况。

如本例所示,如果需要在成员函数中找到要接受函数调用的对象,则最好使用this指针。 本文档后面的程序还经常使用this指针,因为成员函数需要引用接受函数调用的对象,而不是该对象的成员。

请注意,在成员函数assign ()的定义中,该成员函数访问对象p的私有成员。 这是assign ) ),因此在c中是合法的

是类中描述的成员函数。 一般而言,只要有对象名称或指向对象的指针(和引用),类中描述的成员函数就可以不受限制地访问该对象的私有成员。

this指针的类型为

X *const this;

其中,x是类名。 例如,对于Location类的成员函数,this指针的类型如下:

位置*常数this; 也就是说,该类型是Location类型的常量指针。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。