頻道欄目
首頁 > 資訊 > 二級 > 正文

指針數組和指向指針的指針

10-06-07        來源:[db:作者]  
收藏   我要投稿
今天終于弄明白了,指針數組,和指向指針的指針的區別。

  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 ",*(argv+0));

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

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

  12     //{

  13     //    printf("%s ",argv[i]);

  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

  第一句: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的值。

相關TAG標簽
上一篇:臺積電:絕大多數7nm客戶都會轉向6nm_IT新聞_博客園
下一篇:最后一頁
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片