我想向后打印一个整数数组并检测到当使用++而不是“startPos + 1”时,结果会丢失数组的第一个元素。我调试了解问题,但递归工作很奇怪。你能解释一下问题是什么吗?非常感谢你。
#include <stdio.h>
#define SIZE 10
void printBackward(const int[], const int size, int startPosition);
int main(void)
{
const int a[SIZE] = {1,3,5,7,9,10,13,15,17,19};
printBackward(a,SIZE,0);
puts("");
}
void printBackward(const int a[SIZE], const int size, int startPos)
{
if(startPos < size)
{
printBackward(a,size,++startPos); // work wrongly with ++startPos
//printBackward(a,size,startPos + 1); // work properly
printf_s("%4d",a[startPos]);
}
}
答案 0 :(得分:3)
将startPos + 1
传递给该函数不会更改startPos
的值。但是,++startPos
实际上会增加startPos
的值。这两者不可互换。