gpt4 book ai didi

c - 我不明白为什么我的 WRITE 函数(C 语言)不能使用字符 ('c' )?

转载 作者:行者123 更新时间:2023-11-30 16:56:43 27 4
gpt4 key购买 nike

此代码有效:

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'},&cchar 类型变量的地址 (因此它仍然适合需要指向 char 的指针的函数),但 'A' 是单个字符,因此不适合。

关于c - 我不明白为什么我的 WRITE 函数(C 语言)不能使用字符 ('c' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com