阅读下列说明,回答问题1至问题4,将解答写在答题纸的对应栏内。 【说明】 基于Windows 32位系统分析下列代码,回答相关问题。 void Challenge(char*str) { char temp[9]={

admin2018-05-26  46

问题 阅读下列说明,回答问题1至问题4,将解答写在答题纸的对应栏内。
【说明】
    基于Windows 32位系统分析下列代码,回答相关问题。
    void Challenge(char*str)
    {
        char temp[9]={0};
        strncpy(temp,str,8);
        printf("temp=%s\n",temp);
        if(strcmp(temp,"Please!@")==0){
           printf("KEY:******");
        }
    }
    int main(int argc,char*argv[])
    {
        char buf2[16];
        int check=1;
        char buf[8];
        strcpy(buf2,"Give me Key!!");
        strcpy(buf,argv[1]);
        if(check==65)    {
            Challenge(buf);
        }
        else {
            printf("Check is not 65(%d)\n Program terminated!!\n",check);
        }
        return 0;
    }
画出but、check、buf2三个变量在内存的布局图。
      

选项

答案变量的先后关系、每个变量所占空间、增长方向(数组) [*]

解析 要画出buf、check、buf2三个变量在内存的布局图,就是要确定它们之间的前后关系以及每个变量占用的空间大小。
    首先根据三个变量定义的先后顺序,bur2先压入堆栈(在最底下),然后是check,最后是buf(最上面)。
    空间大小根据C语言语法即可确定。buf2是16个字节,check是整型变量占用4个字节,buf是字符数组,有8个字符,每个字符1个字节,共占用8字节。
转载请注明原文地址:https://jikaoti.com/ti/Hwx7FFFM
0

相关试题推荐
最新回复(0)