1. 程式人生 > >通過陣列傳參更進一步體會傳遞指標的過程

通過陣列傳參更進一步體會傳遞指標的過程

#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;
}