在C中我可以写(&'\ n',1)其中write(char [],int)

时间:2012-09-13 12:32:52

标签: c coding-style

我可以吗

write(&'\n', 1); 

并且相当于

char a = '\n';
write(&a, 1);

你会如何以时尚的方式解决这个问题?

我想用一个只将char数组作为第一个参数的函数编写换行符,并在第二个参数中使用它的维度(必须指定维度,因为\0是一个有效的可写字符)

4 个答案:

答案 0 :(得分:1)

正如其他人已经指出的那样,你不能取字符文字的地址。

即使你可以,它也是错误的类型,因为字符数组通常必须是零终止的。

您正在寻找的是:

写(“\ n”,1);

答案 1 :(得分:1)

你可以这样做:

write("\n", 1); 

答案 2 :(得分:0)

你不能取字符文字的地址的原因是因为编译器实际上用字符实际的ASCII值替换它,在本例中是10.所以你的代码实际上是:

write(&10, 1);

你不能取一个数字的地址,因为它很可能不存储在内存中,而是实际生成的代码的一部分。

答案 3 :(得分:0)

你要问的是两件事:

'\n'是一个字符文字,将被视为整数文字。

char a是一个字符变量。

您可以获取变量的地址,而不是文字。