C中指向struct的指针,内容是什么?
Pointer to struct in C, what is the content?
我想知道我是否有这样的代码:
struct something{
int x;
float y;
};
int main(void)
{
struct something *p;
p = malloc(sizeof(struct something));
p->x = 2;
p->y = 5.6;
return 0;
}
如果在某处调用,*p(带*)的内容是什么?是结构的地址还是什么?
p
是指向 struct something
的指针。 *p
将取消引用该指针以提供结构本身。但是,问题在于:struct (*p
) 是一种复合数据类型,您需要使用 .
运算符来获取其成员。
(*p).x = 2;
(*p).y = 5.6;
这也可以在不使用间接运算符 (*
) 的情况下完成(就像您所做的那样):
p->x = 2;
p->y = 5.6;
下面是 *p
的用法示例 - 即取消引用指针:
#include <stdio.h>
#include <stdlib.h>
struct something {
int x;
float y;
};
int main(void) {
struct something *p;
p = malloc(sizeof *p);
p->x = 2;
p->y = 5.6;
struct something s;
s = *p; // dereference p and copy into s
free(p);
// now check s:
printf("%d, %.1f\n", s.x, s.y); // prints 2, 5.6
}
我想知道我是否有这样的代码:
struct something{
int x;
float y;
};
int main(void)
{
struct something *p;
p = malloc(sizeof(struct something));
p->x = 2;
p->y = 5.6;
return 0;
}
如果在某处调用,*p(带*)的内容是什么?是结构的地址还是什么?
p
是指向 struct something
的指针。 *p
将取消引用该指针以提供结构本身。但是,问题在于:struct (*p
) 是一种复合数据类型,您需要使用 .
运算符来获取其成员。
(*p).x = 2;
(*p).y = 5.6;
这也可以在不使用间接运算符 (*
) 的情况下完成(就像您所做的那样):
p->x = 2;
p->y = 5.6;
下面是 *p
的用法示例 - 即取消引用指针:
#include <stdio.h>
#include <stdlib.h>
struct something {
int x;
float y;
};
int main(void) {
struct something *p;
p = malloc(sizeof *p);
p->x = 2;
p->y = 5.6;
struct something s;
s = *p; // dereference p and copy into s
free(p);
// now check s:
printf("%d, %.1f\n", s.x, s.y); // prints 2, 5.6
}