首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针小疑点.

2012-11-06 
指针小问题.........#includestdio.hvoid main(){void inv(int, int)int i,a[10]{1,2,3,4,5,6,7,8,9,0

指针小问题.........
#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函数外面;

另外,声明语句进行声明时最简单的方法就是直接将要声明的函数的表头复制到需要声明的地方就醒了

热点排行