原文出處: 川山甲 歡迎分享原創到 伯樂頭條
思維導圖
介紹
前接上文C 雜談之 指針與數組 (一),接續往下談指針和數組。
指針與數組 ——承接上文進行擴充
你知道X = Y,在編譯運作過程中,是什麼樣嗎?
字元指針與函數
1> 字元串是一個以”結尾的字元數組。
看一個例子:printf接受的是一個指向字元數組第一個字元的指針。
這個例子與下面兩個代碼是一個道理.
2> 幾個常用字元函數的編寫。
1>>> strcat(s,t)函數,把t指向的字元複制到s指向的字元後面?——注意”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
注意:在strcat裡的兩個指針ps和t,方法結束後,這兩個函數都指向”後面,因為ps++操作是”先取結果,後自增”
記憶體變化:
2>>> 函數strend(s,t):字元串t出現在字元串s的尾部,傳回1,否則傳回0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | |
3>>> strncpy(s,t,n) 将t中前n個字元複制到s中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | |
指令行參數
1.第一個參數(常用argc表示)(:運作時指令行參數數目;第二個參數(常用argv表示)是一個指向字元串數組的指針。
2.C語言規定,argv[0],表示啟動程式的名稱。
3.執行個體
運作結果:
記憶體配置設定:
解釋:
>> argv是一個指向指針數組的指針。
是以接受參數也可以寫成:
結合上圖,我們可以這樣了解:從裡向外看
複雜聲明
1.閱讀——從右向左規則。
>> 規則符号:
———————————————————–
* 讀作”指向…的指針”
[] 讀作”…的數組”
() 讀作”傳回…的函數”
———————————————————–
下面兩個示例:
int *f() ; // f: 傳回指向int型的指針
>>步驟:
1)找辨別符f:讀作”f是…”
2)向右看,發現”()”讀作”f是傳回…的函數”
3)向右看沒有什麼,向左看,發現*,讀作”f是傳回指向…的指針的函數”
4)繼續向左看,發現int,讀作”f是傳回指向int型的指針的函數”
int (*pf)(); // pf是一個指針——指向傳回值為int型的函數
1)辨別符pf,讀作“pf是…”
2)向右看,發現),向左看,發現*,讀作 “pf是指向…的指針”
3)向右看,發現”()”,讀作“pf是指向傳回…的函數的指針”
4)向右看,沒有,向左看發現int,讀作”pf是指向傳回int型的函數的指針”
總結
我最近着重看C,是因為我想深入了解一下PHP核心語言和伺服器子產品開發。現在的C語言,能夠讓我更深入的了解計算機内部。