當前位置:首頁 » 編程語言 » 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語言的全局變數和函數無區別了。