1. 程式人生 > >C指針(3)——指向指針的指針(程序講解)

C指針(3)——指向指針的指針(程序講解)

結果 [1] \n size urn 第一個字符 cpp 指針數組 字符

4-1.c多維數組的定義

#include<stdio.h>
int main(void)
{
  int i,j;
  int data[2][3]={{1,2,3},{4,5,6}};    //定義二維數組data,2行3列;並對其進行初始化
  printf("data[2][3]:\n");
   for(i=0;i<2;i++)
    {
      for(j=0;j<3;j++)
         {
           printf(" %d",data[i][j]);  
         }
      printf("\n");
     }
  return 0;
}  

上例子為(a)

結果(a):

data[2][3]:
 1 2 3
 4 5 6  

對(a)進行修改:數組 int data[2][3]; 只定義不賦值。

結果(b):

data[2][3]:
 -858993460 -858993460 -858993460
 -858993460 -858993460 -858993460  

對(a)進行修改:數組 int data[2][3]={{1,2,3}};

結果(c):

data[2][3]:
 1 2 3
 0 0 0

對(a)進行修改: printf(" %d",&data[i][j]);

結果(d):

 data[2][3]:
 2227836 2227840 2227844
 2227848 2227852 2227856

 

4-2.c指針的指針 

#include<stdio.h>
int main(void)
{
  char *name[]={"Fujian","Huian"};  //定義指針數組name,並對其進行初始化
  char **p_name;                    //定義指針的指針p_name
  printf("name[0]:%p\n",name[0]);   //輸出指針數組元素name[0]的值,這裏是第一個字符串的首地址
  printf("name[1]:%p\n",name[1]);
  printf("\n");
  p_name=&name[0];                  //把name[0]的地址賦值給p_name,即p_name指向name[0],因為name[0]的內容是地址,所以p_name是指向地址的指針變量,即指針的指針
  printf("&name[0]:%p\n",p_name);   //輸出p_name的值,即name[0]的地址
  p_name=&name[1];
  printf("&name[1]:%p\n",p_name);
  return 0;
}

  兩個地址:前一個是指針變量的內容,即被指針變量指向的數據的地址;後一個是指針變量本身的地址,這個地址就是指針的指針的內容。

結果:

name[0]:000E5788
name[1]:000E5780 

&name[0]:002EF854
&name[1]:002EF858

  

C指針(3)——指向指針的指針(程序講解)