繁体   English   中英

谁能解释一下这段代码的输出?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM