【发布时间】:2021-11-08 23:08:00
【问题描述】:
我正在学习 C 中的套接字教程,我遇到了这个:
char buffer[256];
bzero(buffer, 256);
n = read(newsockfd, buffer, 255);
但是,据我所知,buffer 变量不应该通过引用(使用 &)传递给 bzero 和 read 函数吗?同样,bzero 和read 的手册页指定这些参数是指针。我错过了什么吗?
【问题讨论】:
-
行
char buffer[256];在堆栈上分配大小为256*sizeof(char)的数组,并为变量buffer分配指向数组开头的指针。这意味着buffer is of typechar*`,这是那些系统调用想要的。 -
@Paul 请不要传播数组是指针的神话。
-
您不能在 C 中传递数组,该数组会衰减为指向其第一个元素的指针。
-
顺便说一句,我很确定
bzero是一个已弃用的 POSIX 函数,您应该改用memset(buffer, 0, 256)。 -
@mediocrevegetable1 谢谢!我确实注意到了一些奇怪的事情,对 memset 做同样的事情。但是,不是我的代码,它来自教程。
标签: arrays c pointers pass-by-reference implicit-conversion