指针数组打印时出现的问题
#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[ ]才可以