这个c语言程序输出为什么不对?
intmain(){inta[10]={1,2,3,4,5,6,7,8,9,0};int*p=a;for(;p;p++){printf("%d",*p);}return0...
int main ()
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
int *p=a;
for(;p;p++)
{
printf("%d ",*p);
}
return 0;
}
目的是通过指针输出数组中的所有元素 展开
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
int *p=a;
for(;p;p++)
{
printf("%d ",*p);
}
return 0;
}
目的是通过指针输出数组中的所有元素 展开
1个回答
展开全部
for(;p;p++) //测试条件为p,p的值一直增加,不可能为NULL(0),更严重的是这个过程中
{ //访问越界了。
printf("%d ",*p);
}
测试条件改为 p<a+10
追问
谢谢您的耐心指导 非常感谢
那么如果我想把输出这一部分做成一个函数,应该怎么样呢
可否通过仅传入一个参数实现这个功能呢?
追答
你想通过一个函数来输出数组吗?
# include <stdio.h>
void PrintArray(int *a,int length);
int main(void)
{
int arr[10]={
1,2,3,4,5,6,7,8,9,10
};
PrintArray(arr,10);
return 0;
}
void PrintArray(int *a,int length)
{
for(int i=0;i<length;++i)
printf("%d\t",a[i]);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询