我的代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
typedef struct {
float x;
float y;
int *t;
}C;
C *z;
z=(C*)malloc(sizeof(C));
z->x=4;
z->y=6;
z->t=(int*)malloc(sizeof(int));
*(z->t) =10;
// Access value
printf("%d\n",*(z->t));
// Access address
printf("%d\n",z->t);
// Access value
printf("%f",z->x);
// Access address of z->x ?
free(z);
}
在代码中我可以访问int * t的地址和值但是对于float x我只知道如何使用z-&gt; x来访问该值,如何访问z-&gt; x的地址?
答案 0 :(得分:3)
使用&
(地址)运算符
float *address = &(z->x); // maybe parenthesis are redundant
printf("addres of z->x is %p\n", (void*)address);
答案 1 :(得分:1)
您需要使用&
运算符。另外,要打印地址,您必须将%p
格式说明符与printf()
一起使用。
值得一提的是 1 ,%p
期望一个void *
类型的参数。由于void *
WRT float *
的表示可能存在一些差异,因此最好将参数转换为void *
。
所以,总的来说,
printf("%p",(void *)&(z->x));
将在x
中为您提供成员变量z
的地址。
1:感谢pmg先生发表评论