在libwebsockets库示例中,有一个类型为struct lws_http_mount
且初始化为here的变量。 stuct lws_http_mount
被声明为here。为了方便起见,下面是其声明和定义的摘录。
struct lws_http_mount {
const struct lws_http_mount *mount_next;
const char *mountpoint;
const char *origin;
const char *def;
const char *protocol;
const struct lws_protocol_vhost_options *cgienv;
const struct lws_protocol_vhost_options *extra_mimetypes;
const struct lws_protocol_vhost_options *interpret;
int cgi_timeout;
int cache_max_age;
unsigned int auth_mask;
unsigned int cache_reusable:1;
unsigned int cache_revalidate:1;
unsigned int cache_intermediaries:1;
unsigned char origin_protocol;
unsigned char mountpoint_len;
const char *basic_auth_login_file;
void *_unused[2];
};
static const struct lws_http_mount mount_localhost1 = {
/* .mount_next */ NULL,
/* .mountpoint */ "/",
/* .origin */ "./mount-origin-localhost1",
/* .def */ "index.html",
/* .protocol */ NULL,
/* .cgienv */ NULL,
/* .extra_mimetypes */ NULL,
/* .interpret */ NULL,
/* .cgi_timeout */ 0,
/* .cache_max_age */ 0,
/* .auth_mask */ 0,
/* .cache_reusable */ 0,
/* .cache_revalidate */ 0,
/* .cache_intermediaries */ 0,
/* .origin_protocol */ LWSMPRO_FILE,
/* .mountpoint_len */ 1,
/* .basic_auth_login_file */ NULL,
}
此结构的成员mountpoint
的类型为const char*
。已在变量"\"
中将其初始化为mount_localhost1
。在此结构内为其成员mountpoint
分配的实际 char数组大小是什么?
我只知道结构中的char数组成员声明应以char mountpoint[string_length]
而不是const char* mountpoint
来完成。
答案 0 :(得分:1)
在内存中创建字符串文字(char数组)"/"
,并使用该内存的地址初始化常量char指针mountpoint
。
没有“在此结构内分配的实际char数组大小”。
它与初始化局部变量如:
没什么不同const char *mountpoint = "/";
变量(const char *)的大小仅是指针的大小。实际的字符串(字符数组)为somewhere else,它与字符指针本身无关。