给指针所指变量赋值排序时,另一个无干变量也会改变,请大家看看为什么
给指针所指变量赋值排序时,另一个无关变量也会改变,请大家看看为什么
给指针所指变量赋值排序时,另一个无关变量也会改变,请大家看看为什么
比如说,调试时(我是单步调试),我输入5、4、3,当在19行读入3时,sum变量会自动加一,这是为什么。
当执行26行 sort(ptr,ptr+sum); 时,sum的值也会改变,这又是为什么。
指针好乱啊。
------解决思路----------------------
ptr对应n的地址,只有ptr[0]有效,ptr[1]不属于你,后面的地址也同样不属于你, 需要分配
如
像这样你可以加到100,多了就要重新分配了
给指针所指变量赋值排序时,另一个无关变量也会改变,请大家看看为什么
#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,多了就要重新分配了