代码非常简单,但我对结果感到头疼。 我只是在玩指针算术,并希望打印出阵列 但我得到了数组的数字加上3。这3个额外的来自哪里?
#include <stdio.h>
int my_array[] = {1,3,5,6,73,343,34};
int *pointer_numeros;
int main (void) {
int i = 0;
pointer_numeros = my_array;
while(*pointer_numeros) {
printf("los numeros del array son %d\t %d\n\n", i++, *pointer_numeros++);
}
getchar();
return 0;
}
答案 0 :(得分:3)
*pointer_numeros
在数组末尾的计算结果为false;它将继续遍历内存直到它访问内容为零的地址(但这是未定义的行为)。
正如其他人所建议的那样,您可以将数组终止为零。但总的来说,你仍然会遇到一个问题:如果你的某些元素本身为零会怎样?
答案 1 :(得分:1)
你的意思是写:
int my_array[] = {1,3,5,6,73,343,34,0};
您的代码会迭代,直到它在数组中找到零。你的数组中没有零。
答案 2 :(得分:0)
只有当指针指向0时,你的循环才会停止。修复如下:
int my_array[] = {1,3,5,6,73,343,34,0};