C 語言程序設計 - 理論方法與實踐(第 2 版) 7.4.1 簡單指針變量作函數參數 例 7-9 用比較交換法 ,將一維數組的最 大值移到數組的最 末元素位置,交換 過程用上述 swap() 函數實現。 #include int main() { void swap(int *,int *); int i,a[10]={33,-12,97,3,7,18,9,51,10,9}; for(i=0;i<9;i++) if(a[i]>a[i+1]) swap(&a[i],&a[i+1]); for(i=0;i<10;i++) printf(],a[i]); printf(\
); return 0; } void swap(int *p1,int *p2 ) { int temp; temp=*p1; *p1=*p2; *p2=temp; } C 語言程序設計 - 理論方法與實踐(第 2 版) 7.4.2 指向數組的指針作函數的參數 例 7-10 設計求一維數組元素最大值的函數 pv_max() ,并在主函數中調用它求數 組元素最大值 。 ? 問題分析與算法設計 為了方便函數編寫,先假定數組長度為 n ,指針 p 指向該數組。 ⑴ 設計 pv_max() 函數 原型: int pv_max(int *p,int n) 功能:在長度為 n 、由 p 指向的一維數組中求元素最大值。 ⑵ 用 main() 函數作為主控函數。 C 語言程序設計 - 理論方法與實踐(第 2 版) 7.4.2 指向數組的指針作函數的參數 int pv_max(int *p ,int n) { int i,max=*p; for(i=1;imax) max=*(p+i); return max; } #include #define N 10 int main(void) { int pv_max(int *,int); int a[N],i; for(i=0;i #define N 100 int main(void) { char string[N]; int count_p(char *); gets(string); printf(Total: %d\n, count_p(string )); return 0; } int count_p(char *p) { int count; for(count=0;*p!='\0';p++) if(*p>='0'&&*p<='9') count++; return count; } 形參: 字符串指針 實參: 字符數組名 C 語言程序設計 - 理論方法與實踐(第 2 版) 第 7 章 指針程序設計 ? 7.1 指針概述 ? 7.2 指針變量的定義和使用 ? 7.3 指針與數組 ? 7.4 指針作為函數的參數 ? 7.5 指針函數 ? 7.6 指針應用程序舉例 C 語言程序設計 - 理論方法與實踐(第 2 版) 7.1 指針概述 ? 指針與指針變量 ? 變量的直接訪問和間接訪問 C 語言程序設計 - 理論方法與實踐(第 2 版) 7.1 指針概述 ? 指針與指針變量 某個變量所占用的內存空間的開始地址稱為該變量的地 址, C 語言將這一地址稱為指針,存儲這一地址的變量 稱為指針變量。 通過指針變量可以實現對其他變量的訪問。 ? 指針變量可以指向任何一種數據類型,如可以指 向基本類型的變量,也可以指向數組等。 C 語言程序設計 - 理論方法與實踐(第 2 版) 7.1 指針概述 ? 變量直接訪問 是指通過變量名直接使用變量數據。 例如: int a=10,b=20,c; c=a+b; printf(%d\n,c); ? 變量間接訪問 是指通過指針變量去訪問其他變量數據。 通過指針變量 p 間接訪問變量 m m &m 變量 m 的存儲空間 指針變量