指针小问题.........
#include<stdio.h>
void main()
{
void inv(int, int);
int i,a[10]={1,2,3,4,5,6,7,8,9,0};
/*printf("输入十个数字:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
*/
printf("\n变换之前的顺序为:\n");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf("\n");
inv(a,10);//错误提示:e:\imdocq\c language\pointer\pointer_6\cpp1.cpp(19) : error C2664: 'inv' : cannot convert parameter 1 from 'int [10]' to 'int'
printf("\n变换之后的顺序为:\n");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
}
void inv(int *x,int n)
{
int *p,temp,*i,*j,m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{
temp = *i;
*i = *j;
*j = temp;
}
return;
}
[解决办法]
#include<stdio.h>
void inv(int*, int);
void main()
{
int i,a[10]={1,2,3,4,5,6,7,8,9,0};
/* printf("输入十个数字:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
*/
printf("\n变换之前的顺序为:\n");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
printf("\n");
inv(a,10);//错误提示:e:\imdocq\c language\pointer\pointer_6\cpp1.cpp(19) : error C2664: 'inv' : cannot convert parameter 1 from 'int [10]' to 'int'
printf("\n变换之后的顺序为:\n");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
}
void inv(int *x,int n)
{
int *p,temp,*i,*j,m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{
temp = *i;
*i = *j;
*j = temp;
}
return;
}
[解决办法]
把main里面的void inv(int, int);改成void inv(int*, int);
[解决办法]
应该将声明语句改成void inv(int *x,int n);并放到main函数外面;
另外,声明语句进行声明时最简单的方法就是直接将要声明的函数的表头复制到需要声明的地方就醒了