c - 结构体和指针的类型是什么?

标签 c

假设我有以下代码:

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/

相关文章:

c - 为什么这个c程序输出这样?

c - 使用 "syscall"而不是直接调用函数的原因是什么?

c - 不应该在 API 中使用枚举吗?

c - Linux 内核字符设备驱动程序向用户空间返回空字符串

Char* 从 char 数组中解析错误

c - Fscanf 未使用 execl 通过管道的输出从通过 fdopen 分配的流中读取任何值

c# - 从 c# 调用 c zlib 解压缩

c - 如何在一个循环内完美地创建一个循环,同时又在另一个循环内创建一个循环?

c - 如何在文件中查找不重复的字符串

c - 局部静态变量是嵌入式编译器提供的吗?