使用while(*p++)检查如果一个数组的多个元素危险?
如果在下一个内存位置有一些值并且该值不是数组的一部分,可能会出现问题.
这个简单的代码:
#include <stdio.h>
void f(float *p) {
printf("%p : %.f\n", p, *p);
while(*p++){
printf("%p : %.f\n", p, *p);
}
printf("%p : %.f\n", p, *p);
}
int main() {
float p[] = {2.2, 3.2};
f(p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给出这个输出:
0x7fffed4e8f10 : 2
0x7fffed4e8f14 : 3
0x7fffed4e8f18 : 0
0x7fffed4e8f1c : 0
Run Code Online (Sandbox Code Playgroud)
那么,如果在0x7fffed4e8f18上,该值为≠0会使我的代码错误吗?