gpt4 book ai didi

c - 尝试理解 C 程序

转载 作者:行者123 更新时间:2023-11-30 20:00:56 26 4
gpt4 key购买 nike

我试图理解这种 C 语言程序,但我做不到。确切地说,我不明白 *s 是如何改变的,以及为什么编译器显示 210012。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void WhatIamDoing(char *s) {
char ch;
if (*s) {
ch = *s;
s++;
WhatIamDoing(s);
putchar(ch);
}
}


int main() {
char s[20] = "012" ;
WhatIamDoing(s) ;
printf( "%s", s ) ;
}

最佳答案

我觉得这样想很容易。在 void 函数中,char *s 是一个指向 char 变量或 char 数组的指针。在您的情况下,它指向字符数组 s[20]="012"。在 WhatIamDoing 函数中,s 指向 '0' 字符,并将其分配给 char ch 变量。然后s++现在's'指向字符'1'。您再次调用函数 WhatIamDoing(s),它也会发生同样的情况(这就像递归函数),并且在最后一个 WhatIamDoing(s) 中, char ch 被指定为 '2'。所有字符完成后,functions running (最后当涉及到空字符时)如果条件为假。在命令 putchar 的最后一个函数中,您打印 '2' 然后 '1' 然后 '0'。这意味着运行 WhatIamDoing 函数后,您将以相反的顺序打印 char 数组。在 main 函数中,您再次打印 s 字符串。然后你就得到了“210021”。希望你能明白。

关于c - 尝试理解 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37818958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com