《C語言學習筆記》指標數組及其應用

來源:互聯網
上載者:User

標籤:

  C語言中,最靈活但又容易出錯的莫過於指標了。而指標數組,是在C中很常見的一個應用。指標數組的意思是說,這個數組儲存的所有對象都為指標。除了儲存物件為指標,即一個地址外,其它操作和普通數組完全一樣。  

1 #include <stdion.h>2 3 int main() {4     int i;5     char *name[] = {"BASIC", "FORTRAN", "C++", "Pascal", "COBOL"};6     for (i = 0; i < (sizeof(name)/sizeof(char *)); i++)7         printf("%s ", name[i]);8     return 0;             9 }

  上面的代碼中,定義了一個名為name的指標數組。它的資料類型為char *,表示其中儲存的所有資料都為char指標,而name後面的[]則表示這是一個數組,並且未指定數組的大小。定義的同時,用{}內的內容初始化這個指標數組。而後,對指標數組的引用中,每個數組元素,都是一個指向字串的指標。它們的對應關係如:

                  

  指標數組最常見的用法是在主函數,用以接收UNIX系統中由命令列傳遞的參數。記得大一學C語言時,當時什麼指標數組,數組指標,完全就是不明就裡。我記得,當時,也有講到指標數組的命令列參數的應用。不過,在一個用Windows 系統下,用VC 6.0教學的環境下,都沒誰來得及問下老師什麼是命令列。因為不懂的實在太多了,不知從何問起了。不過想想也對,當時就算給我講了什麼是命令列,我也不一定能懂。

  帶命令列參數的C主函數原型:int main(int argc, char *argv[])。argc 參數會記錄參數個數,而argv參數會具體記錄所有參數,每一個參數都是以指標定址的字串,即指標數組中的每個元素都指向一個參數的地址。所以通過訪問argv[1],可以獲得目錄名。在命令列參數的應用中,argv[0]指向當前命令名,argv[n]指向通過命令列傳遞進來的第n個參數。比如:UNIX中的ls命令的一個簡單實現。

 

 1 #include "apue.h" 2 #include <dirent.h> 3  4 int main(int argc, char *argv[]) 5 { 6     DIR                *dp; 7     struct dirent    *dirp; 8  9     if (argc != 2)10         err_quit("usage: ls directory_name");11 12     if ((dp = opendir(argv[1])) == NULL)13         err_sys("can‘t open %s", argv[1]);14     while ((dirp = readdir(dp)) != NULL)15         printf("%s\n", dirp->d_name);16     17     closedir(dp);18     exit(0);19 }

   這樣的應用,在UNIX中,不知還有多少。一開始學習C語言時,完全是蒙的。不知其有何具體用處。而學了UNIX之後,就發現UNIX就是C的最佳實務。畢竟,C是作為寫UNIX的工具而發明的。

《C語言學習筆記》指標數組及其應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.