struct packet_event *packet_event_p[8];
这是什么意思?它是一个指向具有8个元素的结构数据类型(struct packet_event)的数组的指针吗?我怎么能使用这个指针?
它是从不同:指向数组和二维数组c的指针c
struct packet_event **packet_event_p;
如果是的话,我怎么会用这个指针?
struct packet_event *packet_event_p[8];
这是什么意思?它是一个指向具有8个元素的结构数据类型(struct packet_event)的数组的指针吗?我怎么能使用这个指针?
它是从不同:指向数组和二维数组c的指针c
struct packet_event **packet_event_p;
如果是的话,我怎么会用这个指针?
第一个:
struct packet_event *packet_event_p[8];
代表 '声明packet_event_p为8个指针数组为结构packet_event'。因此,您创建了8个元素的数组packet_event_p
,这些元素是指向struct packet_event的指针。请参阅this link。
而第二个:
struct packet_event **packet_event_p;
代表 '声明packet_event_p作为指针指向struct packet_event'。请参阅this link。
希望这是有帮助的。
因此,第一个指针是一个指向具有8个元素的数组的指针? –
@BohaoLI,首先实际上并不是指针本身。它是一个*指针数组*。 –
伯豪利,认为它是这样的'结构packaet_event * foo的[X]'创建指针*(8个球)的*阵列,您可以自由使用,你会任何指针,您可以在阵列符号加以解决(例如'foo [1],foo [2]'等等。struct packet_event ** packet_event_p;'创建一个*指针指针类型struct packet *。它不过是其中的一个。 ,你可以根据你的需要分配数量,如果你需要更多的时候可以分配'realloc'。你在这里分配的每个指针都是一个指向一个新分配的ans类型为'struct packet_event'的内存块的指针,让我知道如果你有q的 –
第一个声明:
struct packet_event *packet_event_p[8];
限定阵列8
元件,其中的每个元素是一个指向struct packet_event
的。换句话说,你有一组8
指针,每一个指向一个struct packet_event
。
我怎么能使用这个指针?
您可以为struct packet_event
分配内存和您的阵列点的指针设置,就像这样:
struct packet_event *ptr = malloc(sizeof(struct packet_event));
if (ptr == NULL)
printf ("Error\n");
else
packet_event_p[0] = ptr; //choose a pointer packet_event_p[0] - packet_event_p[7]
第二个声明:
struct packet_event **packet_event_p;
是不同的,因为您声明指针(和不是数组),名为packet_event_p
,其指向指向struct packet_event
的指针。
如果是,我该如何使用这个指针?
分配内存双指针packet_event_p
。请参阅this link为双指针分配内存。
确实,数组可以衰减为指针,但它们不一样。
关于它的类型是“指向打包事件的结构的8个指针的数组” 读取C中的类型通常以某种旋风方式进行。要正确地做,您可以阅读这here。
通常,当要传递这个类型作为函数参数,也将增加阵列的尺寸,或者使用外部已知的可变标记其长度。通常函数声明将是指针而不是数组类型。我认为,即使是编译器自动完成(有关意见将是有益的)
一个不同的类型之间可以使用sizeof
操作中可以看出。当应用于已知为数组类型的变量时,结果就是数组的整个大小。否则它将是一个指针的大小,可能是4字节或8字节(取决于它的64位/ 32位机器)。
将packet_event_p声明为结构数组8的指针struct packet_event –
第二个是:将packet_event_p声明为指向struct packet_event指针的指针 –
将[cdecl.org](http://cdecl.org/)添加到您的收藏夹栏。认真。做到这一点。 [第一片段](http://cdecl.ridiculousfish.com/?q=struct+packet_event+*packet_event_p%5B8%5D%3B),[第二片段](http://cdecl.ridiculousfish.com/?q=struct + packet_event + ** packet_event_p%3B)。 – WhozCraig