在C++中,我编写了以下简单的main:
int main() {
char test[100];
void* a = (void*) test;
void* b = (void*) &test;
std::cout << a << " " << b << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它给了我相同的结果a和b.为什么是这样?我希望第二个是第一个地址的符号.
在C++中,数组被转换为指向数组第一个元素的指针.test是指向第一个元素的指针test[0].&test是整个数组的地址test.虽然,它们的类型test和&test不同,它们的值是相同的,这就是为什么你得到相同的值.
例如
int a[3] = {5, 4, 6};
Run Code Online (Sandbox Code Playgroud)
请看下图:
有关详细说明,请阅读此答案.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |