小小的c++代码让我心烦意乱

Small C++ code irritating my mind

本文关键字:心烦意乱 代码 c++ 小小的      更新时间:2023-10-16

请考虑这段简短的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'

MMS从第一个循环中是清楚的,但是'18'是第二个循环的输出?即使您更改了数组元素,答案仍然是18。

a转换为指向其第一个元素的指针。您正试图通过将第一个元素的地址转换为int来打印它。结果可能因编译器而异。

'a'表示数组中第一个元素的地址。
就好像在你的代码中数组'a'的第一个元素的地址是18。如果用*a代替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();
}