Sou*_*ddy 0 c++ arrays pointers
好一个非常基本的问题,但我坚持下去.我无法弄清楚数组末尾的额外神秘值.我只是试图通过它的基地址遍历数组,简单明了.但是每次执行时,数组末尾的垃圾值都保持不变
g ++ complier 64位机器.
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
void printarray(int * arr){
while(*(arr)){ cout<<*arr<<" "; arr++; }
cout<<endl;
}
int main(){
int arr[] = { 3,2,4,1,5 };
printarray(arr); // prints 3,2,4,1,5,32765
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑1:我明白,只要遇到数组中的0,while就会终止,或者如果没有找到0就会疯狂.但我还是希望你们看一下下面的测试用例
3,2,0,4,1,5 // outputs 3,2
3,2,4,1,5,7,8,9 // outputs same array correctly
3,2,4,1,5,7,8,9,10 // outputs array+ 1 varying garbage at last
//observations, this method works for even sized arrays not containing
//0, while for odd it emits an additional garbage value.
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果while只在0处断开,为什么
每次都会在arrayLength + 1 处断开?这甚至奇怪的长度是什么?