外包工

          學 JAVA 學 OO

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            21 隨筆 :: 0 文章 :: 0 評論 :: 0 Trackbacks

          1.指標的宣告

           

          syntax: 指標資料型態 *指標名稱

          eg.

           

               int *no;

              char *str;

           

           

           

           

          2.配置記憶體(malloc-memory allocation)

           

          指標變數在儲存資料前,需先配置記憶體空間才可使用。

           

          syntax: 指標名稱=(指標資料型態 *)malloc(sizeof(指標資料型態)*長度)

          eg.

           

               int *no;

               char *str;

               //配置 4 int 的空間

               no=(int *)malloc(sizeof(int)*4);

               //配置 20 char 的空間

               str=(char *)malloc(sizeof(char)*20)

           

           

           

           

          3.存取指標所指向的資料-解參(dereference)

           

          指標變數所儲存的是資料所在的記憶體位址,當在指標變數前加上*,即可存取其所指的資料,

           

          syntax: *指標名稱

          eg.

           

               //a為一般的整數變數,ptr_a為指標變數

               int a=5,*ptr_a;

               //將ptr_a指向a的位址(注意,在此不需另外配置記憶體,為甚麼?)

               ptr_a=&a;

               //*ptr_a=a+1

               (*ptr_a)++;

               //印出 ptr_a,a的內容

               printf("ptr_a=%x,*ptr_a=%d,&a=%x,a=%d",ptr_a,*ptr_a,&a,a);

           

           

             

           

           

          4.釋放所配置的記憶體空間(delete)

           

          因為電腦的記憶體空間有限,若要有效的利用,可釋放不用的指標變數。

           

          (雖然理論上在程式結束後,所有的空間都會被自動釋放)

           

          syntax: delete(指標名稱)

           

          eg.

           

               char *name;

               //配置 8 char 的空間

               name=(char *)malloc(sizeof(char)*8);

               //將"Alibaba"複製至name陣列中

               strcpy(name,"Alibaba");

               //暫時釋放空間

               delete(name);

               //重新配置更大的空間 20 char

               name=(char *)malloc(sizeof(char)*20);

               //將"Snow White"複製至name陣列中

               strcpy(name,"Snow White");

               //養成好習慣,釋放配置過的空間。

               delete(name);

           

           

           

           

          5.指標的用途

           

               5.1可以讓函數用傳址呼叫(pass by address)的方式來傳地參數,如此在函數內的改變可以影響到參數。

               5.2透過動態地配置(malloc)與釋放(delete)記憶體,可以更有效地利用記憶體空間。

               5.3可以用來模擬一些較進階的程式技巧及資料結構,如樹(tree),串列(link-list)等。

          6.想一想

          posted on 2010-10-23 09:36 外包工 閱讀(139) 評論(0)  編輯  收藏 所屬分類: C語言程式設計
          主站蜘蛛池模板: 伊春市| 巴彦淖尔市| 郓城县| 嘉荫县| 辽源市| 资中县| 东乡| 开封市| 黄骅市| 瓮安县| 榆社县| 慈溪市| 广饶县| 东山县| 卢龙县| 乐亭县| 平凉市| 蓬安县| 饶平县| 金坛市| 永清县| 清原| 鹤庆县| 宝丰县| 西乌| 同仁县| 靖安县| 乌审旗| 南乐县| 滦南县| 建宁县| 锦屏县| 台中县| 靖江市| 金阳县| 山西省| 讷河市| 惠东县| 佛山市| 嵩明县| 夹江县|