假设我有以下代码:
struct client {
char buf[MAXLINE];
int curp;
};
struct client *c;
我想知道以下每个变量的类型是什么以及为什么?
x1 = c->buf;
x2 = *c->buf;
x3 = &c->buf[c->curp];
x4 = *c;
我知道c是一个指向struct client的指针。因此解引用后的 x4 应该是 struct client。
最佳答案
可能的类型为,
x1 = c->buf;
x1 是指向字符的指针,因为 buf 是基指针。
x2 = *c->buf;
x2 是一个字符,因为基指针被取消引用以获取第一个字符
x3 = &c->buf[c->curp];
x3 是一个指向字符的指针,因为 c->buf[c->curp] 给出一个字符,&
给出它的地址
x4 = *c;
x4 是 struct client 的变量,因为 c 是指向该结构变量的指针并且被取消引用。
这不是必需的,因为也可以使用其他类型来保存这些值。这些是可能的类型。
关于c - 结构体和指针的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23085381/