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中的几乎所有函数都更喜欢传递给变量的指针,这是正确的吗?
答案 0 :(得分:3)
const
限定符是函数与您签订的合同,确保您不会更改传递给它的任何const
参数的值。这可以由编译器验证,因此这是一个在漫长的早晨为您添加额外安全和保证的好方法(;
答案 1 :(得分:1)
C没有字符串作为基本类型的概念;它是一个(char)
数组,只能作为指向(char)
的指针传递给函数。您还将看到(long)
作为旧API中的指针传递,可追溯到实现C的许多CPU无法在寄存器中传递(long)
时(因此无法{ {1}} ED)。