1樓:佳爺說歷史
解析:指標變數是指存放位址的變數。因位址的改變而做出指定性質的衡量變法。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的位址。
擴充套件資料c程式可用運算子&取變數的位址,如表示式&x的值就是變數x的位址。程式除能按名引用變數外,也可利用變數的位址引用變數。按變數名引用變數稱為直接引用,而將變數a的位址存於另一變數b中,借助於變數b引用變數a稱為對a的間接引用。
2樓:銷魂劫
答案是: b
為什麼是變數的位址,舉例來說明:
int * p(先不管p指向的空間);其中p是指標,p的指標型別是int *,int*是什麼型別,就是指標型別,理解是很生澀,看後面;指向的型別是 int,這個應該很清楚吧;好了,定義乙個變數,int a;p=&a;這個應該都能看懂吧,其中&a是指標,你就會明白,變數a的指標是變數的位址了。
希望採納。
3樓:匿名使用者
選b乙個變數的位址成為該變數的指標.例如,位址2000是變數i的指標.如果有乙個變數專門用來存放另一變數的位址(即指標),則它稱為"指標變數".
假設定義了乙個變數i_pointer(變數名可任意取),用來存放整形變數的位址.可以通過下面語句將i的位址(2000)存放到i_pointer中.
i_pointer=&i; 這時,i_pointer的值就是2000(即變數i所占用單元的起始位址)
上述的i_pointer就是乙個指標變數.指標變數就是位址變數,用來存放位址,指標變數的值是位址(即指標).
請區分"指標"與"指標變數"這兩個概念.例如,可以說變數i的指標是2000,而不能說i的指標變數是2000.指標是乙個位址,而指標變數是存放位址的變數
c語言中「指標」和「指標變數」的區別是什麼??
4樓:大野瘦子
1、概念不同
「指標」是概念,「指標變數」是具體實現,指標也是乙個變數,所以需要進行定義,而對於指標的定義,與一般變數一樣。
2、 存放位址不同
乙個變數的(記憶體)位址稱為該變數的「指標」,通過指標能找到以它為位址的記憶體單元。而指標變數是用來存放另乙個變數的位址的(即指標)。
指標和指標變數的關係
1、指標就是位址,位址就是指標。
2、位址就是記憶體單元的編號。
3、指標變數就是存放記憶體位址的變數。
4、指標和指標變數是兩個不同的概念,但要注意的是,通常我們敘述時會把指標變數簡稱為指標,實際他們含義並不一樣。
注:指標裡存的是100. 指標:位址 - 具體。
指標裡存的是位址,指標:指標變數 -可變。
指標的好處:
1、直接訪問硬體
2、快速傳遞資料(指標表示位址)
3、返回乙個以上的值返回乙個(陣列或者結構體的指標)4、表示複雜的資料結構(結構體)
5、方便處理字串
6、指標有助於理解物件導向
5樓:蓋辜苟
用例子來看一下。
int a=3;
int *p;
p=&a;
現在來看一下。a=3這個式子先解釋一下
等式右邊是常量,左邊是變數。
同理的p=&a,左邊的是指標變數,右邊的是指標
指標的基本概念:為了區別記憶體的不同位置,記憶體被分成位元組,記憶體的全部位元組順序地賦予乙個稱為位址的編號。程式中的變數將在記憶體中佔據一定的記憶體位元組,在這些位元組中儲存的資料資訊稱為變數的內容。
乙個變數占用連續的若干個記憶體位元組時,最前面的乙個位元組的位址就作為該變數的位址。指標就是記憶體位址,是變數的位址,或函式的入口位址。變數的位址在程式執行時,起著非常重要的作用。
當計算機在計算含有變數的表示式時,計算機按變數的位址取出其內容,並按變數的位址將計算結果存入到變數佔據的記憶體中。
如**: int x=l; x=x+2; 其中語句「x=x+2;」中的第乙個x涉及到變數x佔據的記憶體,第二個 x是引用變數 x的內容。該語句的意義是「取x的內容,完成加上2的計算,並將計算結果存入變數x佔據的記憶體中。
」指標變數和它所指向的變數:在c語言中,位址也作為一種值,能被儲存、比較、賦值,並稱位址資料為指標型別,而稱儲存位址值的變數為指標變數,簡稱指標。c程式可用運算子&取變數的位址,如表示式&x的值就是變數x的位址。
程式除能按名引用變數外,也可利用變數的位址引用變數。按變數名引用變數稱為直接引用,而將變數a的位址存於另一變數b中,借助於變數b引用變數a稱為對a的間接引用。
定義指標變數的一般形式為: 型別 * 指標變數名; 或 型別 * 指標變數名=初值表示式; 其中,指標變數名是識別符號,指標變數名之前的符號「*」,表示該變數是指標型別的。而最前面的「型別」,表示該指標變數能指向變數或函式的型別。
初值表示式是乙個位址表示式,如表示式中有某變數的位址表示式,則這個變數應是前面已定義的。
在c語言中,當定義區域性指標變數時,如未給它指定初值,則其值是不確定的。程式在使用它們時,應首先給它們賦值。誤用其值不確定的指標變數間接引用其它變數,會引起意想不到的錯誤。
為明確表示指標變數不指向任何變數,在c語言中用0值表示這種情況,記為null。
如 ip= null; 也稱指標值為0的指標變數為空指標。對於靜態的指標變數,如在定義時未給它指定初值,系統自動給它指定初值0。
指標變數取程式物件的(開始)位址值,不能將乙個整型量或任何其它非位址值賦給乙個指標變數。另外,指標變數對所指向的物件也有型別限制,不能將乙個不能指向的物件的位址賦給指標變數。
如有以下定義: int i=100,j,*ip,*intpt; float f,*fp; 以下**如注釋所敘。 ip=&i;/*使ip指向i*/ intpt=ip;/*使intpt指向ip所指變數*/ fp= &f;/*使fp指向正*/ ip=null;/*使 ip不再指向任何變數*/
在電腦科學中,指標(pointer)是程式語言中的乙個物件,利用位址,它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為"指標"。
意思是通過它能找到以它為位址的記憶體單元。 在高階語言中,指標有效地取代了在低階語言,如組合語言與機器碼,直接使用通用暫存器的地方,但它可能只適用於合法位址之中。指標參考了儲存器中某個位址,通過被稱為反參考指標的動作,可以取出在那個位址中儲存的值。
作個比喻,假設將電腦儲存器當成一本書,一張內容記錄了某個頁碼加上行號的便利貼,可以被當成是乙個指向特定頁面的指標;根據便利貼上面的頁碼與行號,翻到那個頁面,把那個頁面的那一行文字讀出來,就相當於是對這個指標進行反參考的動作。
指標是程式語言的乙個重要概念。指標在c程式中有以下多方面的作用:
利用指標能間接引用它所指的物件。
利用各種型別的指標形式引數,能使函式增加描述能力。
指標與陣列結合,使引用陣列元素的形式更加多樣、訪問陣列元素的手段更加靈活。
指標能用來描述資料和資料之間的關係,以便構造複雜的資料結構。當乙個資料a要關聯另乙個資料b時,在資料a中增加乙個指向資料b的指標就可實現資料a關聯資料b。結合系統提供的動態分配儲存設施,又能構造出各種動態資料結構。
6樓:
比較嚴格的說法是這樣的:
系統為每乙個記憶體單元分配乙個位址值,c/c++把這個位址值稱為「指標」。如有int i=5;,存放變數i的記憶體單元的編號(位址)&i被稱為指標。
「指標變數」則是存放前述「位址值」的變數,也可以表述為,「指標變數」是存放變數所佔記憶體空間「首位址」的變數(因為乙個變數通常要占用連續的多個位元組空間)。比如在int i=5;後有一句int *p=&i;,就把i的指標&i賦給了int *型指標變數p,也就是說p中存入著&i。所以說指標變數是存放指標的變數。
有乙個事實值得注意,那就是有不少資料和教科書並沒有如上區分,而是認為「指標是指標變數的簡稱」,如對int *p=&i;的解釋是:宣告乙個int *型指標p,並用變數i的位址初始化;而嚴格說應該是宣告乙個int *型指標變數p才對。所以有時看書要根據上下文理解實質,而不能過於拘泥於文字表述。
7樓:大美人
區別在於:
1、「指標」是概念,「指標變數」是具體實現。指標也是乙個變數,所以需要我們進行定義,而對於指標的定義,與一般變數一樣。
2、乙個變數的(記憶體)位址稱為該變數的「指標」,通過指標能找到以它為位址的記憶體單元。而指標變數是用來存放另乙個變數的位址的(即指標)。
3、指標和指標變數是兩個不同的概念,但要注意的是,通常我們敘述時會把指標變數簡稱為指標,實際他們含義並不一樣。
擴充套件資料
指標與c語言關係:
大家都認為,c語言之所以強大,以及其自由性,很大部分體現在其靈活的指標運用上。因此,說指標是c語言的靈魂,一點都不為過。同時,這種說法也讓很多人產生誤解,似乎只有c語言的指標才能算指標。
指標變數概括:
1、存放位址的變數稱為指標變數。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的位址。
2、如果乙個指標變數存放的是某個物件的位址,則稱這個指標變數指向該物件。在c++程式設計中,指標變數只有確定了指向才有意義。
8樓:戰平卉赫巨集
c++中指標是乙個位址,是指向乙個資料的儲存位址,如int
a;int
*p=&a,即指變數a的位址;而指標變數是把存放資料的位址存放在乙個變數中,先找到變數中的位址,再由此位址找到資料,所以說基本上是一樣的。
9樓:胥紫桐肥翊
對空指標的定義稍有不同
在c語言中:#define
null
(void*)0
在c++語言:#define
null
0數字0是唯一允許可以直接賦給指標的數值
另外c++中類成員指標等型別是c語言中所沒有的
10樓:詹冷霜永東
指標是指位址,指標變數是指儲存位址的變數
指標的基本概念
在計算機中,所有的資料都是存放在儲存器中的。
一般把儲存器中的乙個位元組稱為乙個記憶體單元,不同的資料型別所占用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等。為了正確地訪問這些記憶體單元,
必須為每個記憶體單元編上號。
根據乙個記憶體單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做位址。
既然根據記憶體單元的編號或位址就可以找到所需的記憶體單元,所以通常也把這個位址稱為指標。
對於乙個記憶體單元來說,單元的位址即為指標,其中存放的資料才是該單元的內容。在c語言中,允許用乙個變數來存放指標,這種變數稱為指標變數。因此,乙個指標變數的值就是某個記憶體單元的位址或稱為某記憶體單元的指標。
指標的初始化,指標變數的如何初始化?
拜託,這是宣告,不是定義變數,沒有變數,何來初始化?你甚至可以把thecat去掉。問題補充 這是函式定義,你前面的是函式宣告。thecat指標變數的初始化是由主調函式完成的,functiontwo函式不必理會,也不應理會,直接拿來用就行。c語言指標使用前必須初始化?指標申明的時候最好初始化。初始化以...
關於c 中指標變數的問題,C 中關於指標的一些問題
int i point 1000 這條語句的含義也就是把1000賦值給i point變數自己!即 把1000當作地址值,賦值給i point變數 按理論,這裡不會出現語法上的錯誤而出現的應該是執行結果的錯誤!同意你的看法 但是有的編譯器可能會做這種檢查,對有這種直接給指標變數賦值常數進行錯誤報警或警...
如何判斷指標指向的是陣列還是單個變數
ls錯誤。陣列是陣列,本身不是指標 陣列退化為對應指標僅在傳遞函式引數等少數情形下成立 而且這些情況下,陣列本身不變,只是另外構造了乙個和指向陣列首元素的指標 這樣陣列和指標的值相等 而已。指標無論是在編譯期還是在執行期都不包含指向的物件的型別資訊。對於sizeof,是在編譯期計算的,只有對於陣列名...