gpt4 book ai didi

c++ - 这是指向指针的指针吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:11 26 4
gpt4 key购买 nike

考虑以下结构声明:

typedef struct
{
UINT8 HdrLength:4;
UINT8 Version:4;
UINT8 TOS;
UINT16 Length;
UINT16 Id;
UINT16 FragOff0;
UINT8 TTL;
UINT8 Protocol;
UINT16 Checksum;
UINT32 SrcAddr;
UINT32 DstAddr;
} WINDIVERT_IPHDR, *PWINDIVERT_IPHDR;

最后声明的“*PWINDIVERT_IPHDR”,我以前从未见过。它似乎只是 WINDIVERT_IPHDR 结构的指针类型声明。我的假设正确吗?如果是,这段代码会不会:

extern BOOL WinDivertHelperParsePacket(PVOID pPacket, UINT packetLen,
PWINDIVERT_IPHDR *ppIpHdr, PWINDIVERT_IPV6HDR *ppIpv6Hdr,
PWINDIVERT_ICMPHDR *ppIcmpHdr, PWINDIVERT_ICMPV6HDR *ppIcmpv6Hdr,
PWINDIVERT_TCPHDR *ppTcpHdr, PWINDIVERT_UDPHDR *ppUdpHdr, PVOID *ppData,
UINT *pDataLen)

.. 特别是 PWINDIVERT_IPHDR *ppIpHdr 意味着方法参数“ppIpHdr”实际上是一个指向指针的指针?

最佳答案

是的,这是一个指针类型,如下面的代码片段所示:

typedef struct A {
int val;
} type, *type_ptr;

int main(int argc, const char *argv[]) {

type obj;
obj.val = 42;
type_ptr ptr = &obj;
std::cout << ptr->val; // 42

return 0;
}

旁注:在 C 语言中,声明对象或指向该对象的指针时,始终需要在 struct 关键字前加上前缀。此 typedef 语法通常用于避免不必要的冗长。

关于c++ - 这是指向指针的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254118/

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