[英]Can anyone explain me the output of this code?
char c[] = "hello";
printf("%*d", c);
输出是:
空间无限循环
谁能解释一下这段代码的输出?
空间无限循环
char c[] = "hello";
printf("%*d", c);
%*d
表示格式后的第一个 arg 表示宽度,这里是c的地址解释为一个巨大的数字,默认添加的尊重宽度的字符是一个空格。
请注意,通常缺少 arg 给出要打印的值
如果我使用这样的有效代码:
#include <stdio.h>
int main()
{
printf("%0*d\n", 3, 1);
return 0;
}
结果是 001 因为我要求写宽度为 3 的 '1' 并且添加的字符是 '0'
首先我们了解什么是 c[]="hello"; c 是一个包含 hello 的 char 数组,但什么是数组数组是带有内存块的指针,上面的意思是我们创建一个数组意味着我们创建一个指针,其点 hello 阻塞内存,如 c 意味着 c 包含第一个 hello 块的地址,但是发生了什么在 printf("% d",c) 星号( ) 符号代表宽度然后第一个参数是宽度,像这样 printf("%*c",3,c): 它的输出是: h 这里是宽度三并打印一个字符其中包含 c :现在看看为什么屏幕有无限循环让我们看看 printf("%*d",c) 因为我们知道第一个参数是输出宽度这里是一个字符 c 意思是代码执行时的基本地址,它给出了宽度和 u 的地址知道地址太长,有时是负面的,那么为什么你的屏幕有太多的空间而不是无限的,因为你给出的宽度与地址一样长,进一步怀疑评论我
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.