啪啪拉拉噼里啪啦

          初學(xué)者天堂資料匯集

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            16 隨筆 :: 73 文章 :: 16 評(píng)論 :: 0 Trackbacks

          C語(yǔ)言筆記 指針

          1.       程序定義一個(gè)變量,分配內(nèi)存. 內(nèi)存單元地址內(nèi)存單元內(nèi)容的不同

          2.       變量的地址就是變量的指針.

          3.       一個(gè)變量專(zhuān)門(mén)存放另外一個(gè)變量的地址,稱(chēng)之為指針變量.

          4.       如何定義:

          int i,  int j ;

          int *Pointer_i, *Pointer_j;

          定義的指針變量,是專(zhuān)門(mén)用來(lái)存放地址的.int *Pointer_i;是定義一個(gè)指針類(lèi)型.

          賦值語(yǔ)句

          Pointer_i=&i;    Pointer_j=&j;

          (1)    &:取地址運(yùn)算符 (2): * 指針運(yùn)算符 (3): [] 變地址運(yùn)算符

          #include<stdio.h>

          Void main()

          {  int a,b;

             int *P1,* P2              /* 定義了兩個(gè)指針變量,P1/P2,專(zhuān)門(mén)用來(lái)存放地址 */

             P1=&a;P2=&b;           /*P1指向a,P2指向b.*/

          printf(“%d,%d”,*P1,*P2);     /*輸出P1指向的變量a,輸出P2指向的變量b*/

          }

          5.       P1=&*P2;  P2指向B的地址,P1指向A的地址,經(jīng)過(guò)賦值,P1指向B的地址

          6.       *&a  先進(jìn)行&a運(yùn)算,a地址,再進(jìn)行*運(yùn)算.&a(地址)指向得變量. *&a得作用和*P1作用一樣, *&aa等價(jià)

          7.       交換專(zhuān)題

          Swap(int *p1,int*p2)

          { int *p;p=p1; p1=p2; p2=p;

          }

          Swap(int p1,int p2)

          { int temp; temp=p1;p1=p2;p2=temp;

          }

          如果直接調(diào)用,則主函數(shù)得實(shí)參沒(méi)有進(jìn)行交換.

          C/C++ 應(yīng)該運(yùn)用

          Swap1(int *p1,int*p2)           

          { int temp; temp=p1;p1=p2;p2=temp; }   /* 指針調(diào)用

          Swap2(int &p1,int&p2){int temp; temp=p1;p1=p2;p2=temp;} /* 引用調(diào)用

          8.       指向數(shù)組元素得指針

          int a[10]; int *p; p=&a[0];  // p=&a[0] p=a 等價(jià), int *p=a;

          如果P=a; 那么p+1 指向a[1], p+2 指向a[2]; 所代表實(shí)際地址p+1*d (d 表示所占字節(jié)數(shù),整型2 實(shí)型4 字符型 1)

          如果p=&a[0], p+i a+i  等價(jià)均指向 a[i]的地址; *(p+i)*(a+i) 均是 a[i]的數(shù)組元素

          8.1     下標(biāo)法a[i]

          8.2     指針?lè)?/SPAN> *(a+i) *(p+i), a是數(shù)組名,P是指向數(shù)組的指針變量 初值 P=a;

           

          用數(shù)組名做函數(shù)參數(shù)

           

           

          F(int a[]) F(int *a) 等價(jià)

           


          形參和實(shí)參都用數(shù)組名

          Main()

          { int a[10];

           ……

           Fa,10

          }

           

           


          Main()

          { int a[10];

           

           F(a,10)  

           

          }

           

           

           F(int *x, int n)

          {

          ………………

          }

          Main()

          { int a[10]; int *p

            P=a;

           

           F(p,10)  

           

          }

           

           

          多維數(shù)組

          a[i][j]

          a[0]值是 &a[0][0]  a[1] 的值是&a[1][0]  a[2]的值是&a[2][0]   a[3]&a[3][0]

          a&a[0][0]       a[0]+1 &a[0][1]                 a[0]+j  &a[0][j]

          a+1 &a[1][0]   a[1]+1 &a[1][1]                a[1]+j  &a[1][j]

          a+2 &a[2][0]   a[2]+1 &a[2][1]                 a[2]+j  &a[2][j]

          a+i  &a[i][0]    a[i]+j   就是 &a[i][j]  

          *(*(a+i)+j) a[i][j]的值

          *(a[i]+j) *(*(a+i)+j) 等價(jià)

          *(*a+1) 就是a[0][1]的值 或者說(shuō) *(*a+j)

           

          a[1]+2 *(a+1)+2 &a[1][2]   取地址

          *(a[1]+2) *(*(a+1)+2) a[1][2] 取值

          二維數(shù)組

          A[i][j] 其中 A[i] 實(shí)際上是地址,A是第0行第0列地址,A[i] I行地址第0列地址

           

           

          9.       int (*P)[4] 表示P 是一個(gè)指針變量,它指向包含4個(gè)元素的一維數(shù)組

          10.   int *p[4]   表示一個(gè)指針數(shù)組

          11.   字符串表現(xiàn)形式

          111用字符數(shù)組存放字符串,輸出該字符串

          #include<iostream.h>

          main()

          { char string[]=”l over you my beau MEIMEI”

           Cout<<string;

          }

             11.2 用字符指針指向一個(gè)字符串

             include<iostream.h>

             Void main()

          { char *string=”I love you my MEIMEI”

           Cout<<string;

          }

          字符串之間的COPY

          int  A[]=”I LOVE YOU ”

          int  B[50]

          int I;

          for(i=0;*(A+i)=’\0’ i++)

          {*(B+i)=*(A+i)}

          *(B+i)=’\0’;

          )

          Cout<<B; 或者for(i=0;b[i]!=’\0’;i++) {cout<<B[i]}

          12.   字符串指針做函數(shù)參數(shù)

          12.1 void copy_string(char from[],char to[])

          { int I;

           while(from[i]!=’\0’)

            {  to[i]=from[I];i++ }

          to[i]=’\0’;

          }

          12.2       void copy_string(char *from,char *to)

                { for(;from!=’\0’;from++,to++)

                  *to=*from;

                 *to=’\0’;}

                

          while ((*to=*form)!=’\0’)

          { to++; from++} ;

           

          While((*to++=*from++)!=’\0’);

           

          while(*form !=’\0’)

             { *to++=*from++;}

           *to=’\0’ ;

          分析 char *a;

               cin>>a; 危險(xiǎn)性

           

           

          函數(shù)指針 和指向函數(shù)的指針變量

          用函數(shù)指針變量調(diào)用函數(shù)

          13.   main()

          { int  max(int,int)

          int (*p)(int, int)

          int a,b,c;

          c=(*p)(a,b)  //P先與*結(jié)合,表示一個(gè)指針變量,然后與()結(jié)合,表示指針變量指向函數(shù)

           // int *p() //P與()結(jié)合,聲明一個(gè)函數(shù),返回值指向整型變量的指針

          }

          14.   用指向函數(shù)的指針做函數(shù)參數(shù)

           SUB(int, int, int(*p)(int x,int y), int(*q)(int a, int b))

           

          { int max(int x,int y);

          int min(int x,int y);

          int add(int x,int y);

          int Proress(int x,int y ,int(*)P(int x,int y))

          }

           

          15.       返回指針值的函數(shù)

          int * sub(int x,int y)

          {}

          16.       指針數(shù)組

          類(lèi)型名 *數(shù)組名【數(shù)組長(zhǎng)度】 // int *p[4] 每個(gè)數(shù)組元素(相當(dāng)于一個(gè)指針變量)都可以指向一個(gè)整型變量

           

          17.       指向指針的指針

          例題:

          #include<string>

          #include<iostream.h>

          void main()

          { void sort( char *name[],int n);

           void print(char *name[],int n);

           char *a[]={“woaini”,”tushuguanli”,”wosafsat”,”adsao”};

           int n=4;

           sort(name,n);

           print(name,n)

          }

          void sort(char *name[],int n)

          { char *temp;

           int i,j,k;

          for(i=0;i<n;i++)

          { k=i;

           for(j=i;j<n-1;j++)

          { if(strcmp(name[k],name[j])>0) k=j;

          if(k!=i)

          {

          temp=name[i];

          name[i]=name[k];

          name[k]=temp;

          }

          }

          }

           }

          posted on 2005-04-01 08:50 噼里啪啦的世界 閱讀(298) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 商都县| 乐至县| 竹山县| 合肥市| 桦川县| 邯郸县| 宣城市| 海盐县| 姜堰市| 红桥区| 类乌齐县| 北海市| 海阳市| 阿鲁科尔沁旗| 谢通门县| 漠河县| 和田市| 平乡县| 娄烦县| 平阴县| 麻栗坡县| 兴城市| 舞钢市| 梁平县| 富平县| 门头沟区| 广灵县| 沽源县| 阿勒泰市| 商南县| 萨嘎县| 自治县| 青川县| 恩平市| 平度市| 中阳县| 大渡口区| 漳浦县| 贺兰县| 即墨市| 甘肃省|