我是C语言的新手.但我可以理解为什么以下代码将输出作为'A'.
困扰我的一件事是printf语句中的数组名称p.编译器正在处理这个p?
如何在第5行之后用字符数组"%c \n"替换p?
我知道这是一个愚蠢的问题,很抱歉发布这个野兔.
任何人都可以帮助我理解这背后的概念吗?
line1: #include<stdio.h>
line2: int main()
line3: {
line4: char p[]="%d\n";
line5: p[1]='c';
line6: printf(p,65);
line7: return 0;
}
Run Code Online (Sandbox Code Playgroud)
第一个参数printf()是const char*包含格式说明符的.将它看作字符串文字更常见:
printf("%c\n", 65);
Run Code Online (Sandbox Code Playgroud)
但使用包含字符串的变量是合法的.
在缓冲区中p[1] = 'c'更改dto 的分配,导致将字符(作为十进制值)写入标准输出(作为打印字符的指示,而不是打印数字值).cpA65A%cprintf()%d