请考虑这个简短的C ++代码
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void main()
{
clrscr();
char arr[]="MQMHSJKLSUGDUGIGIUDKLKO";
for(int i=0;i<5;i++)
{
if(i%2==0)
{
cout<<arr[i];
}
}
char a[]={'78','45','21','5'};
cout<<(int)a;
getch();
}
输出为'MMS 18'
从第一个循环中可以看出彩信,但第二个循环的输出“18”是多少? 即使你改变数组元素,答案仍然是18。 请解释一下!
答案 0 :(得分:9)
a
转换为指向其第一个元素的指针。您试图通过将第一个元素的地址强制转换为int
来打印它。结果可能会因编译器而异。
答案 1 :(得分:0)
&#39;一个&#39;表示数组中第一个元素的地址。
就好像在你的代码中,数组的第一个元素的地址是&#39; a&#39;是18.如果你尝试* a而不是它会给你答案为78.你期望的代码可能是
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void main()
{
clrscr();
char arr[]="MQMHSJKLSUGDUGIGIUDKLKO";
for(int i=0;i<5;i++)
{
if(i%2==0)
{
cout<<arr[i];
}
}
char a[]={'78','45','21','5'};
cout<<(*a);
getch();
}