打印结构元素的地址

时间:2014-02-02 21:52:31

标签: pointers struct memory-address

我有以下结构:

typedef struct Author
{
    char** novels;
} Author;

我想打印小说数组中元素的地址。我尝试了这两个:

 printf("%p\n", &(herbert->novels[1]));
 printf("%p\n", herbert->novels[1]);

但我不确定哪个是正确的。有人可以帮我理解使用哪个以及为什么?

1 个答案:

答案 0 :(得分:1)

看看下面的内容......

typedef struct Author
{
    char** novels;
} Author;


int main()
{
    Author a;
    char b = 'b';
    a.novels = new char*[2];
    a.novels[0] = NULL;
    a.novels[1] = NULL;

    printf("1. %p\n", a.novels[1]);    
    printf("2. %p\n", &(a.novels[1]));

    delete[] a.novels;
    return 0;
}

这输出以下

1. 0000000000000000
2. 00000000001269C8

您可以看到第一张照片实际上是NULL - 这是a.novels[1]中存储的值。

第二个是a.novels[1]内存的地址。

假设您查找该项目的内存地址,您需要第二种语法

printf("%p\n", &(herbert->novels[1]));