我有以下结构:
typedef struct Author
{
char** novels;
} Author;
我想打印小说数组中元素的地址。我尝试了这两个:
printf("%p\n", &(herbert->novels[1]));
printf("%p\n", herbert->novels[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]));