请问为什么最大值地址和首地址不是一样的


#include<iostream>
using namespace std;

int main()
{
    int a[10];
    int* p = &a[10];
    for (int i = 0; i < 10; i++)
    {
        cin >> a[i];
    }
    
    cout << "数组首地址为" << (int)p << endl;
    int max = a[0];
    for (int i = 1; i < 10; i++)
    {
        if (a[i] > max)
        {
             max = a[i];
        }
    }
    
    int min = a[0];
    for (int i = 1; i < 10; i++)
    {
        if (a[i] < min)
        {
            min = a[i];
        }
    }
    
    
    cout << "最大数地址为" << (int)&max << "最大数为"<<max<<endl;
    cout << "最小数地址为" << (int)&min << "最小数为" << min << endl;

    system("pause");
    return 0;
}

img

你创建了一个max变量,使用max变量保存最大值这没问题,但max的内存空间占用是独立于数组,你直接返回max的地址当然和数组关系不大,你可以设置一个index索引位,找到一个max就把index设为i,然后打印&a[i],就是数组中最大数的地址了;或者直接用指针记录数组中最值的位置

int max,*max_p;
//...
    max=a[i];
    max_p=&a[i];

max是最大值的复制而不是访问了数组中的最大值
你可以

int * max;
*max = a[i];
cout max

来获取最大值内存中的位置
有帮助望采纳