指针数组打印时出现的问题

问题遇到的现象和发生背景

指针数组打印时出现的问题

用代码块功能插入代码,请勿粘贴截图
#include<iostream>

int main(int argc, char** argv){
    int a[6]={1,2,3,2,1,1};
    int b[3]={4,5,6};
    int c[3]={7,8,9};
    int* p[3]={a,b,c};
    for(int i=0;i<3;i++){
        int* q=p[i];
        while(*q!='\0')
            printf("%d ",*q++);
        printf("\n");
    }
} 

运行结果及报错内容

打印的结果是:
1 2 3 2 1 1 68
4 5 6
7 8 9

我的解答思路和尝试过的方法

把int a[6]改成过int a[7]或者int a[5](当然int a[]里元素的个数也会相应的调整),输出的元素都正确,没有多

我想要达到的结果

为什么唯独int a[6]的时候会多出68

因为你在5和7的时候的打印也是错误的,只是你的编译器碰巧对了而已
在int类型的数组中,'\0'是无法作为结束标志的。只有字符串数组,即char[ ]才可以