我对结构中的指针很困惑。 我有一段代码,我完全不了解, 代码:
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;
做了什么?
答案 0 :(得分:0)
好吧所以似乎(context0 *)实际上是一个类型转换,由(int)bar完成,将其他类型设置为'int'类型。这样做是为了将变量bar设置为上下文的类型。
这个类型转换也可以用于指针类型转换,它将作为(int *)或(struct name *)完成,或者在这种情况下(context0 *)。
最后,parenthisis外部的指针取消引用结构指针,以访问它指向的任何内容,并将此信息放在struct context0 foo中。
为什么这是nesseary我不知道,但语法指向这个。
谢谢,哦,欢迎你np
并且感谢你GáborAngyal,但是不能给出分数或等级1