#include <stdio.h>
int *inverse(int *p,int n);
void main(){
int a[4]={1,2,3,4},*p,i;
p=inverse(a,4);
for(i=0;i<4;i++)
printf("%d",*p);
}
int *inverse(int *p,int n){
int temp[4],i;
while(*p)++p;//找到p所指的最后一个元素
for(i=0;i<n;i++,--p)
temp[i]=*p;//将p的值赋给temp[i]
p=temp;
return p;
}
不知道错哪里了,输出一串奇怪的数字???
while(*p)++p;//找到p所指的最后一个元素
这一步错了。
两个地方有问题
while(*p)++p;//找到p所指的最后一个元素
这个语句p指向数组a, 但是你不能保证a数组后面的内存存的值为0
用while(*p)来判断是不合适的
p=temp;
return p;
temp是局部变量, 只在inverse函数内有意义, 你将p指向temp数组后返回, 跳出inverse函数后的p指针指向的内存是不可确定的