C结构中成员的地址

时间:2015-01-31 17:40:16

标签: c pointers

我的代码如下:

#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的地址?

2 个答案:

答案 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先生发表评论