gpt4 book ai didi

c++ - 指向 int 数组的指针提供与取消引用时相同的地址

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:13 26 4
gpt4 key购买 nike

我有以下代码:

#include <iostream>
using namespace std;
int main()
{
int g[] = {9,8};
int (*j)[2] = &g;
cout << "*(j):" << *(j) << endl;
cout << "j:" << j << endl;
cout << "&j:" << &j << endl;
cout << "&(*j)" << &(*j) << endl;
cout << "*(*j):" << *(*j) << endl;
return 0;
}

哪些输出:

*(j):0x7fff5ab37c7c
j:0x7fff5ab37c7c
&j:0x7fff5ab37c70
&(*j)0x7fff5ab37c7c
*(*j):9

我认为 j 是一个指向两个整数的数组的指针。

&g是整个数组的地址。

然后j存储整个数组的地址。

所以我使用 *(j),它将取消引用数组中的第一个元素。

但是结果说*(j)存储的数组地址与j的值相同。

我不知道这是怎么发生的。

最佳答案

I think that j is a pointer to an array of two integer.
And &g is the address of the whole array.

没错。

And so I use the *(j), it will dereference the first element in the array.

这不是。 *j给你数组本身。当你将它插入到 cout ,它再次衰减到一个指针(这次是指向其第一个元素的指针,类型 int* )并打印它的值。

它实际上和你写的一样 cout << g .

关于c++ - 指向 int 数组的指针提供与取消引用时相同的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19620218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com