這些C語言指標分別是什麼意思C語言中指標和指標變數的區別是什麼??

2021-03-05 09:13:45 字數 5370 閱讀 1857

1樓:匿名使用者

都是看與p結合的優先順序

(1)p是個陣列,p是含有3個元素的陣列,每個元素都是int指標

(2)p是個指標,指向一個 只有3個元素的陣列 的指標。

(3)p是個函式名(即p是函式),只有一個int引數,返回值為int指標

(4)p是個函式指標,指向 只有一個int引數,返回值為int 的函式。

(5)p是個函式指標,指向 只有一個int引數,返回值為int指標 的函式。

(6)p是個陣列,p是含有3個元素的陣列,每個元素都是一個函式指標,這些函式指標都指向

只有一個引數,返回值為int 的函式。

(7)p是個陣列,p是含有3個元素的陣列,每個元素都是一個函式指標,這些函式指標都指向

只有一個引數,返回值為int指標 的函式。

2樓:匿名使用者

1 3個int型別指標成員的陣列

2 指向3個int型別成員的陣列的指標

3 返回int型別指標的函式,該函式有個int引數

4 指向返回int型別的函式的指標,該函式有個int引數

5 指向返回int型別指標的函式的指標,該函式有個int引數

6 返回int型別的函式指標陣列,陣列包括3個成員,這些函式有個int引數

7 返回int型別指標的函式指標陣列,陣列包括3個成員,這些函式有個int引數

簡單原則就是

int *a 可以看作(int*)和a,那麼a是個陣列,型別是int*

int (*a) 可以看作(int)和*a,那麼a是個指向陣列的指標,型別是int

對於int *(*p[3])(int),分解為(int*),*p[3]和(int),那麼*p[3]的p表示有3個成員的陣列的指標,(int*)表示陣列成員的型別是int指標,最後(int)表示陣列成員是函式並有一個int引數的

3樓:匿名使用者

整型的指標陣列,整型的陣列指標

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語言中,允許用一個變數來存放指標,這種變數稱為指標變數。因此,一個指標變數的值就是某個記憶體單元的地址或稱為某記憶體單元的指標。

c語言中和分別是什麼意思,c語言中d和d分別是什麼意思?

是一個語句,判斷一個表示式的真假來執行兩條 比如int a 9,b 8 a b?a 8 b 9 就是這句 相當於if語句吧,問號前面的表示式為真的時候執行a 8,否則b 9 明白了吧。c語言中 d和 d分別是什麼意思?這幾個都是格式字元,在輸出不同資料時要用不同的的格式字元。1 printf d 會...

C語言中ba什麼意思b和a分別是什麼含義啊

a b a b 表示如果a b為真,則取問號後邊的第一個值,這裡是a 如果a b不為真,則取問號後邊的第二個值,這裡是b 表示式1 表示式2 表示式3 運算子的含義是 先求表示式1的值,如果為真,則執行表示式2,並返回表示式2的結果 如果表示式1的值為假,則執行表示式3 並返回表示式3的結果。若a ...

C語言中是什麼意思,c語言中的c是什麼意思?

判斷相等的運算子。形式為a b a b可以是任意值或表示式。當a b相等時,a b為真,否則為假。是關係運算子.表示 判斷是否相等的。如 if a b 判斷a與b是否相等,如相等則為真 c語言中 是什麼意思 是關係運算子.表示 判斷是否相等的。如 if a b 判斷a與b是否相等,如相等則為真 因為...