关于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;
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;