给指针所指变量赋值排序时,另一个无干变量也会改变,请大家看看为什么

给指针所指变量赋值排序时,另一个无关变量也会改变,请大家看看为什么
给指针所指变量赋值排序时,另一个无关变量也会改变,请大家看看为什么

#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>
#include <iomanip>
#include <cmath>
#include <ctype.h>
#include <algorithm>
using namespace std;
int *ptr;
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int sum = 1;
        ptr=&n;
        ptr++;
        while(scanf("%d",ptr)!=EOF)
        {
            sum++;
            ptr++;

        }
        ptr=&n;
        sort(ptr,ptr+sum);
        ptr+=sum;
        for(int i = sum-1;i>=0;i--)
        {
            ptr--;
        }
        printf("\n");

    }

    return 0;
}



比如说,调试时(我是单步调试),我输入5、4、3,当在19行读入3时,sum变量会自动加一,这是为什么。
当执行26行   sort(ptr,ptr+sum); 时,sum的值也会改变,这又是为什么。
指针好乱啊。
------解决思路----------------------
ptr对应n的地址,只有ptr[0]有效,ptr[1]不属于你,后面的地址也同样不属于你, 需要分配
如 

  ptr =(int *)malloc(100*sizeof(*ptr));

像这样你可以加到100,多了就要重新分配了