C和C 指標的指標是什麼型別,C 指標與C指標有什麼區別?

2021-06-25 14:45:08 字數 6723 閱讀 4150

1樓:多美的新一天

1、指標的指標,是個記錄單重(一個*)指標變數首地址的指標變數;

2、與計算機位數有關:16位計算機,2byte;32位,4b;64位,8b;

3、象char ** p1;

int **p2;

將p2賦值給p1,不允許,也沒意義

2樓:扈懷煒

指標的指標還是指標型別,他是指向一個指標的儲存空間的。

比如: int a=100;

int *p=&a;

int **p1=&p;

那麼 p1 就是指向p的儲存空間,也就是說,*p1 存放的是一個十六進位制的常整型數a的地址

p 裡存放的是 a的地址, *p得到就是 a的值,即 100

**p1 也可以得到 100

指標是指向一個變數的儲存空間的變數,變數中存放的是一個長整型數,所以一個指標變數所佔的記憶體空間是4位元組。

指標變數用來指向一個變數的儲存位置,那麼就要求,一個指標要指向什麼型別的變數,就必須把這個指標變數宣告成該型別,否則會有錯誤。

實質上,指標是c、c++中的一種結構型資料型別,和結構體,共用體等一樣,屬於使用者自定義資料型別。

定義一個指標的時候,首先要用型別名 * 表示這是一個指標

3樓:鍵盤未找到

0.    所有的指標都是一個4位元組的整數。任何型別的指標之間總可以進行強制轉換,就是因為它們在記憶體中所佔空間是一樣的。

1.    變數:宣告

t    v;

變數的值(右值,型別是t)被儲存在記憶體中某個地址(左值,型別是t*)空間中。

2.    指標:宣告和使用

t    * ptr;

ptr = &v;

指標變數的值(右值,型別是t *,是其所指向變數的地址)被儲存在記憶體中某個地址(指標變數的左值,型別是t **)空間。

3.    二級指標(指標的指標):宣告與使用

t    * * ptrptr;

同2,二級指標變數的值(右值,型別是t **,是所指一級指標的地址)被儲存在記憶體中某個地址(左值,型別是 t ***)空間。

4.    同理可以有**指標...

5.    由2、3、4可知,指標(無論一級、二級……指標)都是用於儲存地址的,所以,不同型別的指標之間總可以強制轉換。因此,某些函式用void *型別的指標作為形參,而在函式內部,可以根據需要轉成任意資料型別的指標。

4樓:匿名使用者

指標佔據多少空間需要看系統, 32位系統就是32位, 64就是64位.

可以sizeof(int*)

不同型別的指標佔據的空間是一樣多的, sizeof(int*)和sizeof(double*)大小一樣.

雖然大小一樣, 但是語法不允許直接賦值, 需要強制轉換, 這是為了防止程式設計師在無意之間犯錯誤.

這樣**有錯嗎?要怎麼改?

要加個括號, (*l) ->length;

在不確定要不要加括號的情況下, 那麼最好加上, 這樣**的可讀性也會比較好.

5樓:檻外人網上人生

short int * * ppi; //這是一個指向指標的指標,注意有兩個*號

ppi=π

第一句:short int * * ppi;——申明瞭一個指標變數ppi,這個ppi是用來儲存(或稱指向)一個short int * 型別指標變數的地址。

第二句:&pi那就是取pi的地址,ppi=π就是把pi的地址賦給了ppi。即將地址值10賦值給ppi。

ppi的值是多少呢?——10。

*ppi的值是多少呢?——6,即pi的值。

**ppi的值是多少呢?——50,即i的值,也是*pi的值。

呵呵!不用我說太多了,我相信你應明白這種指標了吧!

c++指標與c指標有什麼區別?

6樓:及萍韻漆學

c++裡面的指標可以指向物件

動態申請記憶體的時候用new運算子

c語言的指標指向的是記憶體(不懂物件)

動態申請記憶體的時候用malloc系列的函式

7樓:匿名使用者

對空指標的定義稍有不同

在c語言中:#define null (void*)0在c++語言:#define null 0數字0是唯一允許可以直接賦給版指標的數值

另外權c++中類成員指標等型別是c語言中所沒有的

8樓:匿名使用者

c++中有this指標,用於指向成員函式。c語言沒有

9樓:飛塵

1. 引用必須被初始bai化,指

針不必。du

2. 引用初始化以zhi後不dao

能被改變,指標可以內改變所指的物件。

容3.不存在指向空值的引用,但是存在指向空值的指標。

c++中儘量用引用。個人覺得所有的引用都可以用指標,但指標比引用容易出錯。

引用當然更直觀更直接,做引數時,如果在函式內不刻意要用指標的那些***(如越界訪問,動態定向什麼的),引用可以代替指標

10樓:匿名使用者

c++繼承了c語言指標的特點,與c語言的指標用法相同

11樓:匿名使用者

使用方法是一樣的,不要想太多。

12樓:匿名使用者

沒什麼區別 都是一樣的

c/c++中指標本身的值和指標指向的值有什麼區別?

13樓:匿名使用者

指標本身pa的值是一個變數的地址&a,而指標pa指向的值是變數a的值,不知道說清楚沒有。

14樓:極天異雲

1.指標本身是一抄個變數,存放的值襲是32位的無符號整數,這個整數是一個32位的地址。

2.通過這個32位的整數地址值,可以找到另外一個資料,就是這個指標指向的資料了,可以是任何了型別的資料。也就是指標指向的值了。

15樓:匿名使用者

指標本身的值是一個地址

指向的值是該地址裡面儲存的值

指標本身的值也是儲存在一個地址中的

16樓:南坪中學校帥

指標本身的值是指標指向值的首地址

char *p="123456"

p指向的是"123456"的首地址 也就是"1"的地址.

17樓:

指標的值是指 指標存放的變數的地址。

指標並不指向什麼什麼的值。

18樓:匿名使用者

指標本身的值是它所指向的變數在記憶體中的地址 。指標指向的是你的資料或者操作。

19樓:匿名使用者

指標本身的值是它所指向的變數在記憶體中的地址

c和c++中指標和地址的區別

20樓:硪丨曖戀

指標總共可以分為兩種,函式指標和資料指標。而指標和地址最大的區別就是指標是有型別的,地址是沒有型別的。我們當然可以通過絕對地址的方式找到函式和資料,但是地址是沒有型別的,不能對地址進行算術操作,在涉及諸如陣列等操作時就不能通過地址的自增和自減來訪問陣列的各個變數。

但是通過對指標的引用,就可以通過對指標進行一系列的加加減減操作很方便的訪問陣列的各個元素。

所以,指標是由地址和型別兩部分構成的,指向資料的指標不僅記錄該資料的在記憶體中的存放的地址,還記錄該資料的型別,即在記憶體中佔用幾個位元組,這是地址所不具有的。指向函式的指標不僅記錄函式的入口地址,也記錄該函式的型別,即函式的返回值型別和該函式的引數型別。

在c++中還有一種特殊的資料型別,那就是物件,這是一種使用者自定義的資料型別。它即包含了資料,又包含了函式。但是在同一個類别範本宣告的物件變數各自擁有一份資料成員,卻共享一份函式成員,因為對有共同類别範本的物件來說,他們的資料成員可能不同,但是他們的用來處理資料的函式**確是相同的,所以他們共享一份成員函式。

而此時,物件的指標指向的各自的資料成員。

指標的使用一定要特別小心,千萬不能越界,否則會出現意想不到的結果。而且一定不要使用未初始化過的指標,這樣將會訪問到位置的記憶體,有可能會給作業系統帶來毀滅性的災難,雖然健壯的作業系統一般不會允許這麼做。

c語言中“指標”和“指標變數”的區別是什麼??

21樓:大野瘦子

1、概念不同

“指標”是概念,“指標變數”是具體實現,指標也是一個變數,所以需要進行定義,而對於指標的定義,與一般變數一樣。

2、 存放地址不同

一個變數的(記憶體)地址稱為該變數的“指標”,通過指標能找到以它為地址的記憶體單元。而指標變數是用來存放另一個變數的地址的(即指標)。

指標和指標變數的關係

1、指標就是地址,地址就是指標。

2、地址就是記憶體單元的編號。

3、指標變數就是存放記憶體地址的變數。

4、指標和指標變數是兩個不同的概念,但要注意的是,通常我們敘述時會把指標變數簡稱為指標,實際他們含義並不一樣。

注:指標裡存的是100. 指標:地址 - 具體。

指標裡存的是地址,指標:指標變數 -可變。

指標的好處:

1、直接訪問硬體

2、快速傳遞資料(指標表示地址)

3、返回一個以上的值返回一個(陣列或者結構體的指標)4、表示複雜的資料結構(結構體)

5、方便處理字串

6、指標有助於理解物件導向

22樓:蓋辜苟

用例子來看一下。

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。結合系統提供的動態分配儲存設施,又能構造出各種動態資料結構。

關於c 指標的含義,C 指標定義

在c 中,定義指標變數如你上面所述可以寫成 int a1。此時的a1為一個指標變數,其中可以存放一個int型別的變數的地址,也即所謂的a1即指向對應變數的指標。但是,定義以外的地方,例如程式中用到a1時寫成你上面寫的那個樣子 a1 其表示取a1所指向的地址中存放的內容 也就是說定義int a1,此時...

C語言指標問題,C語言指標問題

include int main void max min sz 0 for i 1 ip i printf max d position d n max,j 1 printf min d position d n min,k 1 return 0 c語言指標問題 10 最好貼上完整程bai序 或標...

C語言的問題,指標陣列,c語言指標陣列

改變不了,字串常量是改不了的,你可以試試char p aaaaa p 1 b 這樣是改不了的 只能定義二維陣列才可以改 char p 3 100 這樣才可以改,不要問為什麼,字串常量就是不能改 直接讓指標指向另一個字串即可 p 0 aaaa 這樣定義指標指向的字串是無法修改的。c語言指標陣列 p是i...