c - C 中字符串文字的地址

标签 c arrays string printf

我读到字符串文字的类型是 char[n+1],其中 n 是长度。字符串文字的存储是一个实现问题。但它仍然必须在瞬间是唯一的。

printf
("%u\t %s\t  %d\t  %c\t  %f\t  %e\t  %x\t  %p\t",
&"XY",&"XY",&"XY",&"XY",&"XY",&"XY",&"XY",&"XY");

这段代码的输出是

4206628 XY 4206628 $ 0.000000 1.800980e-307 7ffde000 00000032

为什么 %f 给出零,%s 给出 XY(& 没有影响?),而 %p 给出了完全不同的值?

最佳答案

您不能传递错误类型的值(与格式说明符所期望的类型不匹配的类型)并且不会获得未定义的行为。

例如,%f 所期望的 double 很可能比指针(这就是您的指针)更大实际上)传递,从而导致传递的值与 printf() 使用的值之间不匹配,从而或多或少造成困惑。

关于c - C 中字符串文字的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18672119/

相关文章:

C 链表错误

c - 使用 char *、unsigned char * 和 signed char * 别名

c++ - 使用按位运算符仅查找数组中存在一次的数字

android - 将字节数组(来自 AudioRecord 的音频缓冲区)转换为 float 组,反之亦然

ios - 使用组合字符串从 url 快速加载图像

c# - 在 C# 中允许用户定义的字符串

c - scanf %d 大输入段错误

c - 使用内联汇编更新内部系统寄存器

c - 包含字符和整数的数组

java - 从字符串中删除日期后从文件名中提取字符串