gpt4 book ai didi

c++ - 变量定义中的struct是什么意思?由 小码哥发布于

转载 作者:行者123 更新时间:2023-11-30 21:45:47 26 4
gpt4 key购买 nike

Here我找到了一个如下所示的变量定义:

struct sockaddr *ai_addr;    

它似乎定义了一个指向struct sockaddr类型变量的指针,但是

1)struct是关键字

2)struct sockaddr test; 创建错误

aggregate 'sockaddr test' has incomplete type and cannot be defined

(我在 gcc 4.7.1 下工作)

最佳答案

在此声明中

struct sockaddr *ai_addr; 

使用了所谓的详细类型说明符。这个声明做了两件事。首先,它声明类型名称 sockaddr 并声明该类型的指针。

要声明指向结构的指针,不需要定义该结构,因为它将是一个完整的类型,因为指针的大小不依赖于结构的大小。

对于此声明

struct sockaddr ai_addr;

编译器会发出错误,因为它需要为 struct sockaddr 类型的对象分配内存,但它不知道该结构的大小,因为该结构尚未定义。即该结构是不完整类型。它只是声明但尚未定义,其大小未知。

关于c++ - 变量定义中的struct是什么意思?由 小码哥发布于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com