通過陣列傳參更進一步體會傳遞指標的過程
阿新 • • 發佈:2019-02-08
#include <bits/stdc++.h> using namespace std; void f(int a[],int n)/*傳陣列符號實際傳的是陣列手元素地址*/ { for(int i=0;i<n;i++) a[i]=1997; } void g(int a[],int n)/*通過一個指標p和相應的地址a+i等價,然後修改p指向的內容的值來同步改變陣列a的值*/ { int *p; for(int i=0;i<n;i++) { p=a+i; *p=1997; } } void k(int a[],int n)/*這個和g一樣,讓p和a+i相等,然後企圖通過改變p本身的值從而達到改變a的目的*/ { int *p; int b[10]={1997}; for(int i=0;i<n;i++) { p=a+i; p=&b[i]; } } void print(int a[],int n) { int i; for(i=0;i<n;i++) printf("%d ",a[i]); } int main() { int a[10]; memset(a,0,sizeof(a)); f(a,10); print(a,10); printf("\n"); memset(a,0,sizeof(a)); g(a,10); print(a,10); printf("\n"); memset(a,0,sizeof(a)); k(a,10); print(a,10); return 0; }