结构指针

时间:2015-05-13 08:58:53

标签: c++ pointers struct

我对结构中的指针很困惑。 我有一段代码,我完全不了解, 代码:

typedef struct{
    int fildes // basic file descriptor
    char* location // location would be somewhere in /dev/tty*
}context0; // structure named 'context' containing the 2 elements above.

context0 someContext; // create a context struct

process(&readLocation); // takes reference from the function 'readlocation'
// i do not know what this process function does.

uint_16_t readLocation(int8_t *buffer, int16_t n, SomeContext){ // buffer pointer, n size read, and fidles 
context0 foo = *(context0*) SomeContext; // ???? What Is Going ON right here ????
return read(foo.fd, buffer, n);
}

我已经更改了一些名称,但是我不完全理解的代码。

有些问题:

  • 如果readLocation函数未被定义为void*,则作为引用传递?面前uint_32_t

  • 主要问题:context0 foo = * (context0*) SomeContext;做了什么?

1 个答案:

答案 0 :(得分:0)

好吧所以似乎(context0 *)实际上是一个类型转换,由(int)bar完成,将其他类型设置为'int'类型。这样做是为了将变量bar设置为上下文的类型。

这个类型转换也可以用于指针类型转换,它将作为(int *)或(struct name *)完成,或者在这种情况下(context0 *)。

最后,parenthisis外部的指针取消引用结构指针,以访问它指向的任何内容,并将此信息放在struct context0 foo中。

为什么这是nesseary我不知道,但语法指向这个。

谢谢,哦,欢迎你np

并且感谢你GáborAngyal,但是不能给出分数或等级1