3

Noob C 问题传入:

#include <sys/types.h> 
#include <sys/socket.h> 
#include <netdb.h> 
int 
getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res)

void 
freeaddrinfo(struct addrinfo *ai)

取自http://www.nxmnpg.com/3/getaddrinfo。也就是说,我对为什么它不仅仅是 getaddrinfo(char *hostname) 而是一个 const 感兴趣。

我知道指针是什么。在我看来,几乎 C 中的所有函数都更喜欢仅传递给变量的指针,这是正确的吗?

4

2 回答 2

3

限定符是函数与您签订的const合同,以确保您不会const更改传递给它的任何参数的值。这可以由编译器验证,因此这是在漫长的早晨结束时为您增加额外安全和保证的好方法(;

于 2012-04-14T04:22:17.497 回答
1

C 没有字符串作为基本类型的概念;它是 的数组(char),只能作为指向 的指针传递给函数(char)。您还将看到(long)在较旧的 API 中作为指针传递,可以追溯到许多实现 C 的 CPU 无法(long)在寄存器中传递 a (因此无法return编辑)。

于 2012-04-14T04:25:17.367 回答