1樓:
指標變數是一個變數,它儲存的是另一個變數的記憶體地址。你如果知道了這個指標變數儲存的值,就可以知道它所指向變數的記憶體地址,於是就可以間接訪問到那一個變數。
定義:指標變數型別 *指標變數名1, *指標變數名2, ... ;
例如:int main(void)
把指標作為函式的引數傳遞,可以使函式可以訪問函式外部的變數,例如:
void swap(int *a, int *b)指標也可以用於傳遞陣列,陣列名本身就是一個指標:
void func(int a, int n)指標還可以指向指標,指向結構體(struct),指向陣列int **p; /*指向int指標*/struct *** *p;
int (*p)[100]; /*指向一個int[100]陣列,括號不可少*/
2樓:申覓荷
指標變數是一個存地址的變數,賦值是隻能傳地址(跟int型只能賦值整型一樣的)
3樓:顏海鏡
不知道你會不會彙編指標其實就是暫存器間接定址
我覺的這樣解釋最直接容易理解,當然是要你會彙編的話,不懂的話,指標其實是個變數只不過這個變數的值是地址
c語言中指標變數與普通變數的區別是什麼?
4樓:與子如初見
int a;
int *p = &a;
指標p是一個變數,裡面存的是一個地址,這個地址是a的地址。通過取值運算子*就可以用p訪問a。指標變數使用起來靈活,一個指標變數只佔四個位元組,但是它可以訪問類似結構體,連結串列,陣列等多資料集合,而且在訪問這些變數的時候是對記憶體直接訪問,執行效率更高,知識需要慢慢積累,用得多了你就知道指標的好處了。
讓指標指向下一個很簡單:
比如說int a[10] = ;
int *p = a; //那麼現在p指向的就是陣列a的第0個元素,*p的值就是1
p++;//執行完這句p就指向了陣列a的下一個元素 ,也就是陣列a的第一個元素,*p的值就是2.
5樓:殳德候寄雲
1、指標變數是變數的一種,指標變數的值是地址(也是整數),普通變數的值是整數、實數或者其他型別。指標變數的主要作用是修改其他函式的區域性變數和訪問陣列。指標變數需要額外的空間存放地址,由於指標變數是間接訪問所指物件,所以比起直接用普通變數名字訪問所指物件而言,速度稍慢。
2、例如:int
a=5;
int*p
=&a;
指標p是一個整型指標變數,裡面存的是一個地址,這個地址是a的地址。通過取值運算子*就可以用p訪問a。指標變數使用起來非常靈活,一個指標變數只佔四個位元組,但是它可以訪問結構體,連結串列,陣列等多資料集合,而且在訪問這些變數的時候是對記憶體直接訪問,執行效率高。
c語言中“指標”和“指標變數”的區別是什麼??
6樓:大野瘦子
1、概念不同
“指標”是概念,“指標變數”是具體實現,指標也是一個變數,所以需要進行定義,而對於指標的定義,與一般變數一樣。
2、 存放地址不同
一個變數的(記憶體)地址稱為該變數的“指標”,通過指標能找到以它為地址的記憶體單元。而指標變數是用來存放另一個變數的地址的(即指標)。
指標和指標變數的關係
1、指標就是地址,地址就是指標。
2、地址就是記憶體單元的編號。
3、指標變數就是存放記憶體地址的變數。
4、指標和指標變數是兩個不同的概念,但要注意的是,通常我們敘述時會把指標變數簡稱為指標,實際他們含義並不一樣。
注:指標裡存的是100. 指標:地址 - 具體。
指標裡存的是地址,指標:指標變數 -可變。
指標的好處:
1、直接訪問硬體
2、快速傳遞資料(指標表示地址)
3、返回一個以上的值返回一個(陣列或者結構體的指標)4、表示複雜的資料結構(結構體)
5、方便處理字串
6、指標有助於理解物件導向
7樓:蓋辜苟
用例子來看一下。
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。結合系統提供的動態分配儲存設施,又能構造出各種動態資料結構。
8樓:
比較嚴格的說法是這樣的:
系統為每一個記憶體單元分配一個地址值,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才對。所以有時看書要根據上下文理解實質,而不能過於拘泥於文字表述。
9樓:大美人
區別在於:
1、“指標”是概念,“指標變數”是具體實現。指標也是一個變數,所以需要我們進行定義,而對於指標的定義,與一般變數一樣。
2、一個變數的(記憶體)地址稱為該變數的“指標”,通過指標能找到以它為地址的記憶體單元。而指標變數是用來存放另一個變數的地址的(即指標)。
3、指標和指標變數是兩個不同的概念,但要注意的是,通常我們敘述時會把指標變數簡稱為指標,實際他們含義並不一樣。
擴充套件資料
指標與c語言關係:
大家都認為,c語言之所以強大,以及其自由性,很大部分體現在其靈活的指標運用上。因此,說指標是c語言的靈魂,一點都不為過。同時,這種說法也讓很多人產生誤解,似乎只有c語言的指標才能算指標。
指標變數概括:
1、存放地址的變數稱為指標變數。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的地址。
2、如果一個指標變數存放的是某個物件的地址,則稱這個指標變數指向該物件。在c++程式設計中,指標變數只有確定了指向才有意義。
怎麼理解C語言指標中a b,c語言中,指標問題! a b和a b,有什麼不同?a是指標
豬頭或火寶寶 你好!首先我們已經知道 a,b,都是指標變數,a表示指標變數所指向的值,同樣 b也是如此。a b就是表示把指標b所指向的值賦值給指標變數a所指向的值。但是要是指標a要是沒有初始化或是開闢空間的話,這樣賦值就有危險!例如 int a int b 5 a b 首先宣告一個指標變數a,但是系...
C語言指標計算,c語言中,指標的運算是怎麼算的,如pa
設pa是指向陣列a的指標變數,則pa n,pa n,pa pa,pa pa 運算都是合法的。指標變數加或減乙個整數n的含義是把指標指向的當前位置 指向某陣列元素 向前或向後移動n個陣列元素位置 指標變數 表示指標指向指向的當前位置 指向某陣列元素 向前或向後移動1個陣列元素位置。成立,但要同一型別。...
c語言中指標變數指向陣列怎樣使其移回第一位
王天旻 include main int p p a printf d p 1 最原始的方法,p加幾就只向哪一位。不加就指向0位 移回第一位的問題我也碰到過,可以這樣 int q q p 然後對p操作,最後 p q 移回來把指標當引數時常有。 長巷煙雨 說錯了,陣列名是常量指標 而不是指標常量。樓主...