繁体   English   中英

为什么这个函数接受`const char *`作为参数而不只是`char *`?

[英]Why does this function accept a `const char*` as a parameter instead just `char*`?

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中的几乎所有函数都更喜欢传递给变量的指针,这是正确的吗?

const限定符是函数与您建立的契约,确保您不会更改传递给它的任何const参数的值。 这可以由编译器验证,因此这是一个在漫长的早晨为您添加额外的安全和保证的好方法(;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM