#include
using namespace std;
void inverse(int *p, int n)
{
int t,*d;
while(p<d)
{
d=p+9;
t=*p;
*p=*d;
*d=t;
p++;
d--;
}
}
int main()
{
int n=10,i,c=0;
int a[n];
for(c=0;c<n;c++)
cin>>a[c];
inverse(a,10);
cout<<"逆序排列的数据为:\n";
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
不要还没学会走,就想飞。你的inverse函数代码前几行就错了,而且使用了指针没有任何防护(空指针及数据溢出检查)。while(p<d)
p没有做空指针检查,d没有初始化。后面不看了。
对于数组,能用下标指示器(索引),就尽量不要用指针。首尾2个指示器,交换数组元素不好吗?
void inverse(int a[], int n)
{
if (n < 0) return;
for (int i = 0, j = n - 1; i < j; ++i, --j) {
// swap a[i] and a[j]
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
int main()
{
int n = 10;
int *a = new int[n]();
// 输入数据到数组a
// ...
inverse(a, n); // 翻转数组a
// 输出逆序后数组a
// ...
delete a;
return 0;
}