关于char 类型地址的有关问题

关于char 类型地址的问题。
char mm[7]="dfadsf";

cout<<mm<<endl;
cout<<&mm<<endl; //输出的是mm的地址,应该是首地址。
    for (int i=0;i<7;i++)
    {
       cout<<&mm[i]<<endl;   循环里怎么输出的不是地址,而是字母?
    }

最好能详细点。谢谢。把您的感悟都说出来,对我来说是字字金贵啊。

------解决方案--------------------
cout<<&mm[i]<<endl;等同于
cout << mm + i << endl;
本质上是const char*类型的,而cout的《操作符如果接受char*类型的参数,输出的是其指向的字符串。所以输出字母了。
你这样改后就输出地址了
cout << reinterpret_cast<int*>(&mm[i]) << endl;