回覆列表
  • 1 # 平底一聲嘞

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

  • 中秋節和大豐收的關聯?
  • oppo和vivo哪個牌子好?