【发布时间】:2013-11-06 08:45:20
【问题描述】:
我有以下代码:
#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是一样的值。
我不知道这是怎么发生的。
【问题讨论】:
-
*j是数组本身。
标签: c++ arrays pointers memory-address dereference