Visual C++初學者指針學習指南

發表于:2007-04-27來源:作者:點擊數: 標簽:指針學習指南C++初學者visual
何為指針? 指針基本上和其它的變量一樣,唯一的一點不同就是指針并不包含實際的數據,而是包含了一個指向內存位置的地址,你可以在這個地址找到某些信息。這是一個很重要的概念,并且許多程序或者思想都是將指針作為它們的設計基礎,例如鏈表。 開始 如何定
  何為指針?

  指針基本上和其它的變量一樣,唯一的一點不同就是指針并不包含實際的數據,而是包含了一個指向內存位置的地址,你可以在這個地址找到某些信息。這是一個很重要的概念,并且許多程序或者思想都是將指針作為它們的設計基礎,例如鏈表。

  開始

  如何定義一個指針?呃,就像定義其它的變量一樣,不過你還需要在變量名之前添加一個星號。例如,下面的代碼創建了兩個指向整數的指針:

clearcase/" target="_blank" >cc66 width="90%" align=center bgColor=#dadacf border=1>
  int* pNumberOne;

  int* pNumberTwo;

  注意到變量名的前綴“p”了嗎?這是編寫代碼的一個習慣,用來表示這個變量是一個指針。

  現在,讓我們把這些指針指向一些實際的值吧:

  pNumberOne = &some_number;

  pNumberTwo = &some_other_number;

  “&”標志應該讀作“the address of(……的地址)”,它的作用是返回一個變量的內存地址,而不是這個變量本身。那么在這個例子中,pNumberOne就是some_number的地址,亦稱作pNumberOne指向some_number。

  現在,如果我們想使用some_number的地址的話,那么我們就可以使用pNumberOne了。如果我們希望經由pNumberOne而使用some_number的值的話,我們可以用*pNumberOne?!?”應該讀作“the memory location pointed to by(由……指向的內存位置)”,它用來取得指針所指向的值。不過指針聲明的情況例外,如“int *pNumber”。

  到現在都學到什么了(一個例子)

  咻!要理解的東西太多了,所以在此我建議,如果你還是不理解以上的概念的話,那么最好再通讀一遍;指針是一個復雜的主題,要掌握它是要花些時間的。

  這里有一個示例,解說了上面討論的那些概念。它是由C編寫成,并不帶有C++的那些擴展。

  #include

  void main()

  {

  // 聲明變量:

   int nNumber;

   int *pPointer;

   // 現在,給它們賦值:

   nNumber = 15;

   pPointer = &nNumber;

   // 打印nNumber的值:

   printf("nNumber is equal to : %d\n", nNumber);

   // 現在,通過pPointer來控制nNumber:

   *pPointer = 25;

   // 證明經過上面的代碼之后,nNumber的值已經改變了:

   printf("nNumber is equal to : %d\n", nNumber);

   }

  請通讀并編譯以上代碼,并確信你已經弄懂了它是如何工作的。然后,當你準備好了以后,就往下讀吧!

  陷阱!

  看看你是否能指出以下程序的缺陷

  #include

  int *pPointer;

  void SomeFunction()

  {

   int nNumber;

   nNumber = 25;

   // 使pPointer指向nNumber:

   pPointer = &nNumber;

  }

  void main()

  {

   SomeFunction(); // 讓pPointer指向某些東西

   // 為什么這樣會失???

   printf("Value of *pPointer: %d\n", *pPointer);

  }

  這個程序首先調用SomeFunction函數,在其中創建了一個名為nNumber的變量,并且使pPointer指向這個變量。那么,這就是問題之所在了。當函數結束的時候,由于nNumber是一個本地變量,那么它就會被銷毀。這是因為當語句塊結束的時候,塊中定義的本地變量都會被銷毀。這就意味著當SomeFunction返回到main()的時候,那個變量就已經被銷毀了,所以pPointer將會指向一個不再屬于本程序的內存位置。如果你不懂這一點,那么你應該去讀一讀有關本地變量、全局變量以及作用域的東西,這些概念非常重要。

  那么,如何解決這個問題呢?答案是使用一種名為動態分配的技術。請注意:在這一點上,C和C++是不同的。既然大多數開發者正在使用C++,那么下面的代碼就使用C++來編寫。

共5頁。 1 2 3 4 5 8 :

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97