此代码有效:
void main (void)
{
write (1, "1", 1);
}
这个也有效:
void putchar(char c)
{
write (1, &c, 1);
}
void main (void)
{
putchar('1');
}
但是这个没有:
void main (void)
{
write (1, '2', 1);
}
第二段代码中,c是一个字符(不是指针),为什么c之前有&?
最佳答案
可能你的write
函数看起来像
write(int a, char *string, int b)
所以它期望指针作为第二个参数。第一种和第二种情况适合它,但最后一种将 char (不是指向 char 的指针)作为第二个参数传递
编辑:
正如 mch 所写,原型(prototype)是 ssize_t write(int fildes, const void *buf, size_t nbyte);
所以第二个参数必须是指针,而不是 char
注意:"A"
被视为字符数组 {'A', '\0'},&c
是 char 类型变量的地址
(因此它仍然适合需要指向 char
的指针的函数),但 'A'
是单个字符,因此不适合。
关于c - 我不明白为什么我的 WRITE 函数(C 语言)不能使用字符 ('c' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831803/