『C/C++ポインタ経験総括』ノート

3536 ワード


        
          
  1: int p;                       //      

  2: int *p;                      //        

  3: int p[3];                    //        

  4: int *p[3];                   //          ([]        *   )

  5: int (*p)[3];                 //           

  6: int **p;                     //        

  7: int p(int);                  //                     

  8: int (*p)(int);               //                          

  9: int *(*p(int))[3];           //                           

          (  ),                     。



     :

       ,                 ,              。

  1: int *ptr;             //    :int *

  2: char *ptr;            //    :char *

  3: int **ptr;            //    :int **

  4: int (*ptr)[3];        //    :int (*)[3]

  5: int *(*ptr)[4];       //    :int *(*)[4]

        :

     ,                        *  ,             。

  1: int *ptr;         //  :int

  2: char *ptr;        //  :char

  3: int **ptr;        //  :int *

  4: int (*ptr)[3];    //  :int ()[3]

  5: int *(*ptr)[4];   //  :int *()[4]

       :

              ,             ,          。 32    ,             32   ,  32            32  。                           ,   sizeof      。               。

           :

 sizeof                 。 32    ,       4      。

       :

             。                          ,      。           n ,         。             ,         。                 n*sizeof(       )   。

            ,      ,       ,         ,      。            ,       。

   & *:

&       ,*      。

&a      a   ,*p      p      ,     p     ,       p      。

     :

               ,              。

               ,                    :     、        、                  。

                                ,             ,         。

        :

              。      0   。

          ,            ,             ,      ,      ,        ,            。

    sizeof(array) ,   array      ,  sizeof              。

    *array ,array   ,           0     。sizeof(*array)           。

    =sizeof(array)/sizeof(*array)

sizeof              。

          :

                 。

  1: struct mystruct

  2: {

  3: 	int a;

  4: 	int b;

  5: 	int c;

  6: };

  7: 

  8: struct mystruct ss={20,30,40};

  9: struct mystruct *ptr=&ss;

         ->             。

  C/C++            ,                   ,           。              ,        ,        、           ,               “    ”。                      。      *(ptr+n)          。

 



        :



                    。



  1: int fun1(char *,int);

  2: int (*pfun1)(char *,int);

  3: pfun1=fun1;

  4: int a=(*pfun1)(“xxxxxxxx”,8);

            。        ,             。



      :

       p,                TYPE *TYPE,       :(TYPE *)p;

             ,       TYPE *,       TYPE,                。      p           。

               ,                     ,        ,        。

       :

      ,               。           ,                  ,           。

          :ptr1=(TYPE*)ptr2 ,  sizeof(ptr2   )  sizeof(ptr1   ),       ptr1   ptr2            。