c 指標入門

2021-09-30 03:28:23 字數 1588 閱讀 9000

什麼是指標?

其實指標就像是其它變數一樣,所不同的是一般的變數包含的是實際的真實的資料,而指標是乙個指示器,它告訴程式在記憶體的哪塊區域可以找到資料。這是乙個非常重要的概念,有很多程式和演算法都是圍繞指標而設計的,如鍊表。

開始學習

如何定義乙個指標呢?就像你定義乙個其它變數一樣,只不過你要在指標名字前加上乙個星號。我們來看乙個例子:

下面這個程式定義了兩個指標,它們都是指向整型資料。

int* pnumberone;

int* pnumbertwo;

你注意到在兩個變數名前的「p」字首了嗎?這是程式設計師通常在定義指標時的乙個習慣,以提高便程式的閱讀性,表示這是個指標。現在讓我們來初始化這兩個指標: 

pnumberone = &some_number;

pnumbertwo = &some_other_number; 

&號讀作「什麼的位址」,它表示返回的是變數在記憶體中的位址而不是變數本身的值。在這個例子中,pnumberone 等於some_number的位址,所以現在pnumberone指向some_number。 如果現在我們在程式中要用到some_number,我們就可以使用pnumberone。

我們來學習乙個例子:

在這個例子中你將學到很多,如果你對指標的概念一點都不了解,我建議你多看幾遍這個例子,指標是個很複雜的東西,但你會很快掌握它的。

這個例子用以增強你對上面所介紹內容的了解。它是用c編寫的(注:原英文版是用c寫的**,譯者重新用c++改寫寫了所有**,並在dev c++ 和vc++中編譯通過!)

#include 

void main()

void main()

void main()

void main()

void main()

void main()

;void main()

指向陣列的指標

你也可以讓指標指向乙個陣列,按下面的方法操作: 

int *parray;

parray = new int[6]; 

程式會建立乙個指標parray,讓它指向乙個有六個元素的陣列。另外一種方法,不用動態分配: 

int *parray;

int myarray[6];

parray = &myarray[0]; 

注意,&myarray[0] 也可以簡寫成 myarray ,都表示是陣列的第乙個元素位址。但如果寫成parray = &myarray可能就會出問題,結果是 parray 指向的是指向陣列的指標(在一維陣列中儘管與&myarray[0]相等),而不是你想要的,在多維陣列中很容易出錯。

在陣列中使用指標

一旦你定義了乙個指向陣列的指標,你該怎樣使用它呢?讓我們來看乙個例子,乙個指向整型陣列的指標:

#include 

void main()

{int array[3];

array[0] = 10;

array[1] = 20;

array[2] = 30;

int *parray;

parray = &array[0];

cout<<"parray points to the value %d/n"<<*parray<

C 入門 指標

指標是乙個用來儲存位址的變數。int a 10 int p a通過解引用的方式找到指標指向的記憶體 p 1000 cout p endl cout p endl 32位作業系統下,指標都占用4個位元組 64位作業系統下,佔8個位元組。cout sizeof int endl cout sizeof ...

C 入門 this指標

在 c 中,每乙個物件都能通過this指標來訪問自己的位址。this指標是所有成員函式的隱含引數。因此,在成員函式內部,它可以用來指向呼叫物件。友元函式沒有this指標,因為友元不是類的成員。只有成員函式才有this指標。成員函式最終被編譯成與物件無關的普通函式,除了成員變數,會丟失所有資訊,所以編...

C語言 指標入門

在我年輕的時候,我三次鼓起勇氣學習c,三次都倒在了指標上 雖然很清楚指標是一種存放位址的變數,但是他具體是乙個什麼意思呢?我把整個空間看成乙個 n 1 維的空間。n 是資料型別,可能是int,char,double,等等。1 是位址。把位址看成一根數軸。舉個粒子 int pa int a 5 pa ...