这个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;

}

目的是通过指针输出数组中的所有元素
展开
 我来答
坤坤吃饭第一名
推荐于2016-02-19 · TA获得超过667个赞
知道小有建树答主
回答量:391
采纳率:66%
帮助的人:206万
展开全部
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]);
    
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式