数组的传递是By Reference 而不是 By Value

解决方案 »

  1.   

    如果你是再使用
    srand((unsigned)time(NULL))
    for(int i=0;i<10;i++)
    num[i]=rand()%100;
    的話,那不改變的話那才奇怪了。
      

  2.   

    我想该鸟应该遇见的是程序越界的事,你的问题应该是类似于这样的void f1(int *pNum,int n)
    {
        for(int i=0;i<n;i++) *pNum++ = rand()%100;
    }void f2(int *pNum.int n)
    {
        for(int i=0;i<n;i++) cout<<*pNum++<<endl;
    }void f3(int *pNum,int n)
    {
        for(int i=0;i<n;i++) cout<<*pNum++<<endl;
    }void main()
    {
        const int N=5;
        int num1[N],num[N];    f1(num,N);
        f2(num1,N*2); // Note: the dim num1 is N, now we let it be 2N
        f3(num,N);
    }也就是在f1中输出的结果和f3中输出的结果不同,这是有可能的,因为你的指针在别的地方改变了他的值
    也就是——你的程序里有BUG
      

  3.   

    Sorry,在f2中应该有赋值语句
    void f2(int *pNum.int n)
    {
        for(int i=0;i<n;i++)
        {
            *pNum *= 2;
            cout<<*pNum++<<endl;
        }
    }