main 函數參數
main(int argc, char *argv[])
// 或
main(int argc, char **argv)
argc:命令行參數個數(含程序名)
argv:字符串指針數組,argv[0] 為程序名
- 參數從命令行獲取:
C:\>prog arg1 arg2
示例:顯示所有參數
main(int argc, char *argv[]) {
while (argc-- > 1)
printf("%s\n", *++argv);
}
// C:\>prog BASIC dBASE FORTRAN
// 輸出:BASIC / dBASE / FORTRAN
示例:參數作循環控制
#include
main(int argc, char *argv[]) {
int a = 0, n = atoi(*++argv);
while (n--) printf("%d ", a++ * 2);
}
// 輸出 n 個偶數
指向指針的指針(二級指針)
int x = 10, *p = &x, **pp = &p;
printf("%d", **pp); // 10
**pp 等價 *(*pp) → *p → x
- 間接訪問級數無硬性限制,建議 ≤ 2 級
指針數組遍歷示例
static char *ps[] = {"BASIC","DBASE","C","FORTRAN","PASCAL"};
char **pps;
for (int i = 0; i < 5; i++) {
pps = ps + i;
printf("%s\n", *pps);
}
函數指針 vs 指針函數
| 概念 | 聲明 | 含義 |
| 函數指針變量 | int (*p)(); | 指向函數入口的指針變量 |
| 指針型函數 | int *p(); | 返回指針的函數 |
函數指針調用步驟
- 聲明:
int (*pmax)();
- 賦值:
pmax = max;
- 調用:
z = (*pmax)(x, y);
注意:括號不可省,*pmax 非解引用而是語法標記。
指針型函數示例:星期名查找
char *day_name(int n) {
static char *name[] = {"Illegal day","Monday",...,"Sunday"};
return (n<1 || n>7) ? name[0] : name[n];
}
指針數組
元素為同類型指針的數組,常用於字符串數組、函數指針表(跳轉表)。
- 上一篇文章: C語言結構體變量賦值、初始化與成員訪問完全指南
- 下一篇文章: C語言字符串指針、函數指針、指針函數與指針數組深度解析
Copyright ©
程式碼之家 All Rights Reserved