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

标签 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

应该仍在数组的范围内。

最佳答案

可能还有其他问题,但乍一看您没有正确初始化数组,应该这样做:

int 数字[21] = { 0 };

关于c - Int 指针在 C 中具有奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34018557/

相关文章:

c# - 为什么 int 不能为空?可为空的 int(int?)如何在 C# 中工作?

c++ - void *p = &&abc; 中的 && 是什么意思

c - 外部 C 代码无法从两阶段 x86 引导加载程序执行?

c++ - 比较两个指针数组,其中一个来自 .h,另一个来自 cin

c - 传递参数中的指针目标的符号不同

将 int 转换为 'C' 中的 int[]

c++ - 为什么使用标准类型作为模板参数?

objective-c - 在 Objective-C 中在后台运行 C 函数

c - 在 OS X .app Bundle 中分发 C 命令行工具

c++ - 指向成员函数错误的指针