什麼是指標?
其實指標就像是其它變數一樣,所不同的是一般的變數包含的是實際的真實的資料,而指標是乙個指示器,它告訴程式在記憶體的哪塊區域可以找到資料。這是乙個非常重要的概念,有很多程式和演算法都是圍繞指標而設計的,如鍊表。
開始學習
如何定義乙個指標呢?就像你定義乙個其它變數一樣,只不過你要在指標名字前加上乙個星號。我們來看乙個例子:
下面這個程式定義了兩個指標,它們都是指向整型資料。
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 ...