当前位置:首页 » 编程语言 » c语言的this是什么意思
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言的this是什么意思

发布时间: 2023-04-29 12:35:02

Ⅰ 请朋友们帮我解答一下这道c语言的题目.特别是this->a += a;和a+=::a;这两句什么意思

::a指的是int a=10;中的a
this->a指的是int a,b;中的a
void func(int a)
{
//********error********
this->a += a;//this指的是类,this->a是指这个类所定义的变量a; 等号后面的a是函数参数的a, 加this是为了区分闷咐这两个a; 如果变量名不同时可以省去this关键字,如test这个函数中的a同样是指类的a,但因为传蚂帆纯入参数名为 t ,所以省去this
}

void test(int t)
{
//********error********
a += t;
this->func(a);//这样调用等于a++
}

void func2()
{
//********error********
a+=::a;//指的是"int a,b;"中的a 加"int a=10;"中的a
//第一个中类内定义的a ,第二个 是类外轿念部定义的a,

}

Ⅱ c++中this[i]的用法是什么语法

这里跟operator[]的重载是没裂野有关系的,因为this是指向自己的指针,而*this才是雹隐一个ExecState实例。
那么问题就是如何从C语言的层面进行理解。this[JSStack::Callee]其实是*(this+JSStack::Callee)。如果没有了解过webkit的代码,但也能猜测calleeAsValue()的调用条件是这个实例在一个数组中(或许是一个用数组实源源厅现的栈?),这样那句代码才有意义。

Ⅲ C语言有this这个关键字吗

没有,但是能不能用就看你的编译环境了

Ⅳ 求解链表问题,本人初学c++,c语言的链表没学好,什么this,next都不懂怎么回事,求生动具体易理解的解释

if (pfirst == 0)
pfirst=this; 如果pfirst指针为空,则将this赋给他,this指的是调用这个函数的类猛让的指针。

for (ps->pnext;ps=ps->next);
ps->pnext = this; 将ps定位到链表的最后一个节点,然后将this加到链表的皮哗末端。
next一般就是指链表中该节点的后一个节点的指针。

这些都是基础知识,最好把课本内容好好看几遍,自燃知行己多多动手写写就会理解了。

Ⅳ java中一般方法里的this是代表调用本方法的对象,但是构造方法里的this代表的是什么呢。

this代表你正在构造的对象。

publicclassTest搭尺{
publicTest(){
System.out.println(this.toString());
}
publicstaticvoidmain(String[]args){
Testobj=newTest();
System.out.println(obj.toString());
}
}

输出的两个字知册高符串相同(后面的数字是对象地址),说明this和obj是同一个对象。


这里this就是正在构建的CommunicationDemo的对象,作为参数传给Thread的构造函数。


内幕是:java对象的建立其实是在构造函数开始执行之前,就是说构造函数执行的时候,被构造的对象其实已经存在了,所以构造函数中可以用this引用当前被构造的对象进行处理(比如 this.name=“Jack”)。姿埋

Ⅵ c语言里面this是什么关键字。。求详解

C语言里面没唯猛有this这个关燃隐键字的。这个关键字只用C++里面有
class
A{
public
void
getss(){
//此时这里的this代表的是累的实例
this->ges();
//等同指段桥于类的实例去调用
}
public
void
ges(){
}
}

Ⅶ c语言this什么意思

this是一个指向对象自身闭侍和的指针。举个例子:
class Test
{
int i, j;
public:
void set(int a, int b)
{
this->i = a;//将调用该函数的对象中的成员i 赋值为a
this->j = b;//将调用轿盯该函数的对象中的成员j 赋值为b
}
};
int main()
{
Test t;
t.set(10, 20);//谈旦这时set函数中的this就是指向t的指针,相当于this=&t;
}

Ⅷ C++中的"this"指标是什么意思

C++中的"this"指标是什么意思?

A.静态成员函式没有this指标
B。由友元函式本质上不属于这个类,所以也没有。
C。明显错
D。对的。
A.fun1. 就是上面选择题的知识点
this指标是指一个类,在例项化时,也就是生成物件时。
其实可以生成很多物件,怎么区别是哪个物件要呼叫共同的成员函式呢。
本物件在呼叫成员函式,如何让编译器识别出,所以就有必要用一个指标来指向这个物件。
就是指向自己,所以有了this指标。
静态成员函式,是被这个类所有的物件共有的,所有不需要this来区别呼叫,直接呼叫就是。
友元函式本质上是不是这个类里的函式,只是有特权的访问而已,不是这个类的东西,没必要给this指标。

c中的指标是什么意思?

为了方便起见,完全可以这样理解:指标就是变数的地址.其实指标好似一个容器,用来装既定的变数在记忆体中分配的那个特定的地址,作用是通过那个特定的地址来指向既定的变数,形成间接访问.

C++中的指标是什么意思?有什么作用啊?, C语言中的空指标是什么意思?

这样一看才知道大家对空指标的概念如此浑浊哦!!
首先:
void* 这不叫空指标,这叫无确切型别指标.这个指标指向一块记忆体,却没有告诉程式该用何种方式来解释这片记忆体.所以这种型别的指标不能直接进行取内容的操作.必须先转成别的型别的指标才可以把内容解释出来.
还有'',这也不是空指标所指的内容. ''是表示一个字串的结尾而已,并不是NULL的意思.
真正的空指标是说,这个指标没有指向一块有意义的记忆体,比如说斗闷谈:
char* k;
这里这个k就叫空指标.我们并未让它指向任意地点.
又或者
char* k = NULL;
这里这个k也叫空指标,因为它指向NULL 也就是0,注意是整数0,不是''
一个空指标我们也无法对它进行取内容操作.
空指标只有在真正指向了一块有意义的记忆空碰体后,我们才能对它取内容.也就是说要这样
k = "hello world!";
这时k就不是空指标了.

php中的指标是什么意思

PHP中并没提及指标,也不是PHP的方向.

C和指标,这本书中的指标是什么意思?

指标在汇编的层上看,实际上是一个长整数,表示记忆体的地址。在C语言层面上,可以看着是指向某地址的一个指示器,所以叫做指标。 类似WINDOWS系统里面的快捷方式。

在c++中双指标是什么意思和用法,如int**

指标的指标
int**也就是说指标A中储存着另个一个指标B的地址,而指标B指向一个int的变数.
int*就是指标指向一个int的变数。
int**可以理解为一个指标指向int*。

c++中的#include "stdafx.h"是什么意思

添加了名为stdafx.h的标头档案,里面有一些函式你可能会用到,预编译用的

#include "stdafx.h"
是预编译处理器把stdafx.h档案中的内容载入到程式中来。
stdafx.h
1名称的英文全称为:Standard Application Fram Extend
所谓标头档案预编译,就是把一个工程(Project)中使用的一些MFC标准标头档案(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分标头档案,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
预编译标头档案通过编译stdafx.cpp生成,以工程名命名,由于预编译的标头档案的字尾是“pch”,所以编译结果档案是projectname.pch。
编译器通过一个头档案stdafx.h来使用预编译标头档案。stdafx.h这个标头档案名是可以在project的编译设定里指定的。编译器认为,所有在指令#include "stdafx.h"前的程式码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有程式码。
因此,所有的MFC实现档案第一条语句都是:#include "stdafx.h"。
2 详细工作原理及作用
stdafx.h中没有函式库,只是罩租定义了一些环境引数,使得编译出来的程式能在32位的作业系统环境下执行。
Windows和MFC的include档案都非常大,即使有一个快速的处理程式,编译程式也要花费相当长的时间来完成工作。由于每个.CPP档案都包含相同的include档案,为每个.CPP档案都重复处理这些档案就显得很傻了。
为避免这种浪费,AppWizard和VisualC++编译程式一起进行工作,如下所示:
◎AppWizard建立了档案stdafx.h,该档案包含了所有当前工程档案需要的MFCinclude档案。且这一档案可以随被选择的选项而变化。
◎AppWizard然后就建立stdafx.cpp。这个档案通常都是一样的。
◎然后AppWizard就建立起工程档案,这样第一个被编译的档案就是stdafx.cpp。
◎当VisualC++编译stdafx.cpp档案时,它将结果储存在一个名为stdafx.pch的档案里。(副档名pch表示预编译标头档案。)
◎当VisualC++编译随后的每个.cpp档案时,它阅读并使用它刚生成的.pch档案。VisualC++不再分析Windowsinclude档案,除非你又编辑了stdafx.cpp或stdafx.h。
这个技术很精巧,你不这么认为吗?(还要说一句,Microsoft并非是首先采用这种技术的公司,Borland才是。)在这个过程中你必须遵守以下规则:
◎你编写的任何.cpp档案都必须首先包含stdafx.h。
◎如果你有工程档案里的大多数.cpp档案需要.h档案,顺便将它们加在stdafx.h(后部)上,然后预编译stdafx.cpp。
◎由于.pch档案具有大量的符号资讯,它是你的工程档案里最大的档案。
如果你的磁盘空间有限,你就希望能将这个你从没使用过的工程档案中的.pch档案删除。执行程式时并不需要它们,且随着工程档案的重新建立,它们也自动地重新建立。
3 如何理解其原理
通俗一点说
当我们使用AppWizard来自动生成某些专案的时候,系统会自动把所需要include的标头档案在stdafx.h中先include一下,这样,我们只需要直接include这个stdafx.h档案即可.因为同一个专案中的不同原始档CPP都包含相同的include档案,这样,为每个.CPP档案都重复include这些档案就显得很傻了。当然如果你不用MFC的话就不用了。即:在每个.cpp档案中都include stdafx.h 就相当于包含了其他的如iostream.h等档案
4 与stdio.h的区别
我们一般用TC或vc编译C程式的时候都要首先包含这个stdio.h标头档案,这个标头档案里面包含了scanf和printf函式的定义,如果我们不在程式开头include这个档案,那么你呼叫上面这两个函式就不会成功,它其实和c++中的iostream.h档案的作用差不多的,它们一般都已经在stdafx.h档案中被包含。

C语言中的空指标是什么意思?山东

这样一看才知道大家对空指标的概念如此浑浊哦!!
首先:
void* 这不叫空指标,这叫无确切型别指标.这个指标指向一块记忆体,却没有告诉程式该用何种方式来解释这片记忆体.所以这种型别的指标不能直接进行取内容的操作.必须先转成别的型别的指标才可以把内容解释出来.
还有'',这也不是空指标所指的内容. ''是表示一个字串的结尾而已,并不是NULL的意思.
真正的空指标是说,这个指标没有指向一块有意义的记忆体,比如说:
char* k;
这里这个k就叫空指标.我们并未让它指向任意地点.
又或者
char* k = NULL;
这里这个k也叫空指标,因为它指向NULL 也就是0,注意是整数0,不是''
一个空指标我们也无法对它进行取内容操作.
空指标只有在真正指向了一块有意义的记忆体后,我们才能对它取内容.也就是说要这样
k = "hello world!";
这时k就不是空指标了.

Ⅸ java/c++里的this->和this.有什么不同

不知道java,java中好像没有指针的概念,我这里说一手晌饥下c++中的this指针。c++里不能用this点毕返的,因为this是指针不是对象,在c++中this指针就是代表对象,更本质的说法就是对象的内存地址,比如class test {} ; test ob; test *p = &ob; //这时ob的值和this指针的值是一样的。

其实你关键理解为什么有this指针。在用c语言写顺序表的时候我们一般这样写。
struct list { int *pstart; int maxsize, last_inx;}

对于这样的数据结构,我们要操作它的时候,比如列出里面的所有元素。我们会有函数:
void show(list *plist) { ..... }

在c++中,因为使用了类,所以我们可以直接把数据和操作封装在一谨哗起,比如
class list {
public:
void show(); // 注意这里,对比用c语言写的函数,这里少了一个参数,list *plist;
private: int *pstart; int maxsize, last_inx;
};

省略的那个参数就是所谓的this指针了,在c++中我们常用list ob; ob.show()这样调用。
它的意思就是说对于ob这个对象,或者说这块内存,我要进行show操作……

观楼主英俊潇洒,风流倜傥,关注0x30网络贴吧,必成千秋大业,建不世之功。

Ⅹ c++ this指针的目的是什么

哎,这些东西如果一说就复杂了。

是这样的,其实不管C语言还是C++语言,最后编译成机器码并没有什么本质的区别,所谓类,虽然在语言这个层面有了一个概念性的解释(相同属性相同操作的集合的抽象化),但是实际上在二进制的表示和结构上没有什么本质的区别,都是一个内存区域保存了一些值。那这样一来,就可能使得程序员跨过一个类的限制(比如应该只能访问自己的成员,但是你想办法访问了其他对象的成员)。

所以C++在设计的时候就隐含了一个this指针,这个指针袭镇念主要是用于保证你的访问不能跨界和用于区分不同的对象。举个例子,你的任何一个函数的拍困申明实际隐含了一个this指针参数,这个参数你不可见,也不可编辑,是编译器自动添加上去的,为什么要这样?实际上对象在实例化的时候,体积是非常小的,并没有每一个对象都保存函数,同一个类的对象的函数实际上只有一份副本(二进制层面),那如何来区分到底是谁调用了函数?就是这个this指针。

this指针旅册实际是指向了对象的内存地址起始值,所以通过一个偏移量,就知道了对象的各种属性(变量),也就确定了一个绝对的对象。当然在对象的函数操作里我们可以显示的用this->的方式来引用变量,但是你也发现你即使不加上this指针,它依然知道你引用了谁,其实就是隐含了一个参数this指针。

为了进一步理解,想一下static修饰的函数有什么区别,为什么static函数只能访问static修饰的属性?因为static修饰的函数就没有传递这个this指针,所以它不知道你指的是哪一个对象。而实际上,static修饰的符号就和C语言的全局变量和函数无区别了。