为什么我打印的字符不起作用?

Why is my printing of a char not working?

这让我大吃一惊。我真的不知道这是怎么回事。我有以下代码:

char cSexMF = 'M';

printf("%c \n", &cSexMF);

它应该输出 M 但是每次我 运行 它输出的代码都带有不同的数字或字母或符号或它真正喜欢的任何东西。我认为这是一个简单的命令,但显然我什至不能再这样做了。

任何人都可以提供一些关于为什么会发生这种情况的见解吗?

因为你传错了参数。

"%c" 说明符需要一个 char 并且您正在传递类型为 char *.

的变量的地址

要使其工作,只需删除运算符

&地址
printf("%c\n", cSexMF);

您可能会感到困惑,因为如果它是 scanf(),则需要 &,原因是 scanf() 需要修改变量的内容,您通过它是地址,它通过指针修改它。 printf() 函数需要值,而不是地址。

另外,启用编译器警告。作为一名学习c语言的程序员,它会为你省去很多问题,即使是有经验的程序员也会使用警告来防止愚蠢的错别字。

您正在传递指针。不要这样做。

char cSexMF = 'M';
printf("%c \n", cSexMF);

当你在变量名前加上&时,会导致地址提取。在这里,您尝试将指向 char 的 指针传递给需要 char 的调用。

当您在变量前添加一元 & 时,它 returns 该变量的地址。因此,您正在尝试打印 cSexMF 的地址而不是它所持有的值。

使用 printf() 时,不需要添加 & ,只需

printf("%c \n", cSexMF);

就足够了(除非你真的想输出地址,但是你需要使用 %p 类型说明符)。

通常,当您使用 scanf() 时,您会在变量前添加 &(因为您将值存储在该地址),但在使用 printf()