以下是两个代码块,我无法通过以下方式弄清楚输出的原因。在第一个代码中,我使用printf打印返回的指针,因此它也可以在main函数中正常工作,但在第二个代码中,当我删除printf语句时,它会打印其他内容。输出每次都会改变。
两种情况的主要功能相同。
char * updateSlidingWindow(char * slide, char newChar) {
char * c, dst[strlen(slide)];
int dstindex = 0;
c = slide + 1;
while(*c != '\0')
dst[dstindex++] = (char)*c++;
dst[dstindex++] = newChar;
dst[dstindex] = '\0';
slide = dst;
printf("%s\n", slide); // This line is commented for testing. It changes output.
return slide;
}
//主要功能
int main(void) {
char * SLIDING_WINDOW = "Hello";
SLIDING_WINDOW = updateSlidingWindow(SLIDING_WINDOW, 'D');
printf("%s\n", SLIDING_WINDOW);
return 0;
}
输出 - 使用printf更新功能 -
elloD
elloD
更新功能中没有printf -
����