在C中具有奇怪行为的Int指针

时间:2015-12-01 10:50:39

标签: c pointers int dereference

void main(){
  int digits[21]; //this was initialized so that every element is 0 by looping over every element and setting it to 0
  char input[20];
  scanf("%s", input);
  parseDigits(digits, input);
}

void parseDigits(int* digits, char *string){
  char *end = string + strlen(string) -1;
  int i;
  for (i = 0; i < strlen(string) - 1; i++, end--){
    int *digit = digits + i;
    printf("%d", *digit);
    *digit += charToDigit(*end);
    if (*digit >= 10){ //carry one
      *digit -= 10;
      digit++;
      *digit += 1;
    }
  }
}

打印一个过大的整数,而不是0,这是预期的输出。我不明白,

digits + i

应该仍然在数组的范围内。

1 个答案:

答案 0 :(得分:1)

可能还有其他问题,但从初看起你还没有正确初始化你的数组,这应该是这样的:

int digits[21] = { 0 };