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)。また、古いAPIでは、Cが実装されたCPUの多くがレジスターでaを渡すことができなかった(したがって、編集できなかった)(long)ときにさかのぼって、ポインターとして渡されたことがわかります。(long)return

于 2012-04-14T04:25:17.367 に答える