指针数组,和指向指针的指针- 大学生计算机技术网- cccbbs.net
  今天终于弄明白了,指针数组,和指向指针的指针的区别。

  1 #include <stdio.h>

  2 #include <string.h>

  3 void main()

  4 {

  5

  6     char a[]="1234567890MMMMMMM";

  7     char *p= a;

  8     char** argv=&p;

  9     printf("%s\n",*(argv+0));

  10         //char *argv[]={"12345","67890","MMMMMMM"};

  11     //for(i=0;i<3;i++)

  12     //{

  13     //    printf("%s\n",argv);

  14     //}

  15 }

  一. 指针概念:

  当我们程序如下申明变量:

  short int i;

  char a;

  short int * pi;

  程序会在内存某地址空间上为各变量开辟空间,如下图所示。

  内存地址→6     7      8     9     10     11    12    13     14    15

  -------------------------------------------------------------------------------------

  …  |     |      |      |      |      |       |      |      |      |

  -------------------------------------------------------------------------------------

  |short int i |char a|      |short int * pi|

  图中所示中可看出:

  i 变量在内存地址5的位置,占两个字节。

  a变量在内存地址7的位置,占一个字节。

  pi变量在内存地址9的位置,占两个字节。(注:pi 是指针,我这里指针的宽度只有两个字节,32位系统是四个字节)

  接下来如下赋值:

  i=50;

  pi=&i;

  经过上在两句的赋值,变量的内存映象如下:

  内存地址→6     7      8     9     10     11    12    13      14     15

  --------------------------------------------------------------------------------------

  …  |    50      |      |      |    6         |      |      |       |

  --------------------------------------------------------------------------------------

  |short int i |char a|      |short int * pi|

  看到没有:短整型指针变量pi的值为6,它就是I变量的内存起始地址。所以,这时当我们对*pi进行读写操作时,其实就是对i变量的读写操作。如:

  *pi=5;   //就是等价于I=5;

  二. 指针的地址与指向另一指针地址的指针

  我们看到,指针变量本身与其它变量一样也是在某个内存地址中的,如pi的内存起始地址是10。同样的,我们也可能让某个指针指向这个地址。

  看下面代码:

  short int * * ppi;    //这是一个指向指针的指针,注意有两个*号

  ppi=pi

  {dy}句:short int * * ppi;——申明了一个指针变量ppi,这个ppi是用来存储(或称指向)一个short int * 类型指针变量的地址。

  第二句:&pi那就是取pi的地址,ppi=pi就是把pi的地址赋给了ppi。即将地址值10赋值给ppi。如下图:

  内存地址→6     7      8     9     10     11    12    13       14    15

  ------------------------------------------------------------------------------------

  …  |    50     |      |      |      6       |       10      |      |

  ------------------------------------------------------------------------------------

  |short int i|char a|      |short int * pi|short int ** ppi|

  从图中看出,指针变量ppi的内容就是指针变量pi的起始地址。于是……

  ppi的值是多少呢?——10。

  *ppi的值是多少呢?——6,即pi的值。

  **ppi的值是多少呢?——50,即I的值,也是*pi的值。
郑重声明:资讯 【指针数组,和指向指针的指针- 大学生计算机技术网- cccbbs.net】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——