空間站

          北極心空

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
                 指針學(xué)習(xí)不好關(guān)鍵是概念不清造成的,說的簡單點就是書沒有認(rèn)真看,指針的學(xué)習(xí)猶如人在學(xué)習(xí)饒口令不多看多學(xué)多練是不行的,下面是兩個很經(jīng)典的例子,很多書上都有,對于學(xué)習(xí)的重點在于理解*x和x的理解,他們并不相同,*x所表示的其實就是變量a本身,x表示的是變量a在內(nèi)存中的地址,如果想明白可以輸出觀察cout<<*x"|"x;,當(dāng)定義了int  *x后,對x=&a的理解的問題。仔細(xì)閱讀和聯(lián)系下面的兩個例子我想指針問題就不是難點了!

          #include <stdio.h> 
           
          main() 

          int a,b; /* 定義a,b兩個整形變量用于輸入兩個整數(shù) */
          int *point_1,*point_2,*temp_point; /* 定義三個指針變量 */
          scanf("%d,%d",&a,&b); /* 格式化輸入a,b的值 */
          point_1=&a; /* 把指針變量point_1的值指向變量a的地址 */
          point_2=&b; /* 把指針變量point_2的值指向變量b的地址 */
          if (a<b) 

              temp_point=point_1; /* 這里的temp_point是用于臨時存儲point_1的值也就是變量a的地址的 */
              point_1=point_2; /* 把point_2的值賦予point_1 */
              point_2=temp_point; 
              /* 由于point_1的值已經(jīng)改變無法找到,利用前面臨時存儲的也就是temp_point找回原point_1的值賦予point_2,打到把point_1和point_2值對換的目的*/

          printf("%d,%d",*point_1,*point_2); /* 利用*point_1和*point_2也就是分辨指向b和a的方法把值顯示自愛屏幕上 */

           
          /* 此題需要注意和了解是的此法并沒有改變變量a,b的值只是利用指針變量分別存儲a和b的地址,然后再把那兩個指針變量的值對換一下其實就是存儲在 
          指針變量里面a與b的地址對換,在利用*point_1和*point_2的方式把調(diào)換后的值顯示出來這里的*point_1實際就是a,此中算法并非真的改變a,b的值,而是 
          利用指針進行地址交換達到大小排序的目的. 
          */



           

          #include <stdio.h> 
           
          main() 

          int a,b; /* 定義a,b兩個整形變量用于輸入兩個整數(shù) */
          int *point_1,*point_2; /* 定義三個指針變量 */
          scanf("%d,%d",&a,&b); /* 格式化輸入a,b的值 */
          point_1 = &a; /* 把指針變量point_1的值指向變量a的地址 */
          point_2 = &b; /* 把指針變量point_2的值指向變量b的地址 */
          compositor(point_1,point_2); /* 調(diào)用自定義的排序涵數(shù),把a,b的地址傳遞給point_1和point_2 */
          printf("%d,%d",a,b); /* 打印出a,b的值 */

           
          static compositor(p1,p2) 
          int *p1,*p2; /* 定義形式參數(shù)p1,p2為指針變量 */

          int temp; /* 建立臨時存儲變量 */
              if (*p1<*p2) /* 如果*p1<p2,注意這里的*p1和*p2其實就是a和b */
              { 
                  temp = *p1; /* 利用變量temp用于臨時存儲*p1和就是a的值 */
                  *p1 = *p2; /* 將*p1的值也就是a的值換成*p2的值也就是b的值,等價于a=b */
                  *p2 = temp; /* 將*p2的值也就是temp的值等價于b=temp */
              } 

           
          /* 注意:此題與上題不同的是,直接改變了a于b的值達到真實改變的目的 */



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=315632

          posted on 2007-08-06 11:07 蘆葦 閱讀(337) 評論(0)  編輯  收藏 所屬分類: 其他
          主站蜘蛛池模板: 溧水县| 凉城县| 普兰县| 苍南县| 内丘县| 临武县| 临汾市| 平舆县| 沁水县| 临高县| 霍城县| 锡林浩特市| 安宁市| 嘉义县| 乌鲁木齐市| 林甸县| 东阿县| 湘乡市| 封丘县| 天台县| 大连市| 嘉定区| 娄烦县| 昭苏县| 金阳县| 毕节市| 南澳县| 如东县| 定西市| 泰和县| 泽普县| 乐昌市| 新和县| 湖北省| 陵川县| 武宁县| 清新县| 托里县| 左云县| 绍兴市| 江门市|