gpt4 book ai didi

c - 这段代码在 C 中是如何工作的

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:23 24 4
gpt4 key购买 nike

void main()
{
char c;
clrscr();
printf("Enter your name:\n");
scanf("%s", c);
printf("You entered your name as : \n")
printf("%s",c);
getch();
}

output//
Enter Your name:
sandeep
You entered your name as :
sandeep

我不明白这个单个字符变量“c”在不是字符数组时如何存储字符串??

最佳答案

它没有,真的。

您正在将 c(不是 c 的地址)传递给 scanf,因此它被提升为 int,然后是用作指针的值(因为“%s”希望通过指向某个内存的指针进行写入)。这给出了未定义的行为。显然,当提升为 int 时,您碰巧在 c 中拥有的值恰好出现在您可以写入而不会立即导致明显问题的地址上。

当您将它传递给 printf 时也发生了几乎相同的事情,并且由于地址匹配,您的输出与输入匹配——但不能保证它会继续这样做,如果您再次运行相同的可执行文件,或者如果您使用不同的编译器编译,在不同的系统上运行,等等。

关于c - 这段代码在 C 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380924/

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