zoukankan      html  css  js  c++  java
  • 指针笔试题

    #include<iostream>
    using namespace std;
    int main()
    {
        char *str[]={"welcome","to","Fortemedia","Nanjing"};
        char**p=str+1;
        str[0]=(*p++)+2;
        str[1]=*(p+1);
        str[2]=p[1]+3;
        str[3]=p[0]+(str[2]-str[1]);
        cout<<str[0]<<endl;  //输出'\0'
        cout<<str[1]<<endl;  //输出Nanjing
        cout<<str[2]<<endl;  //输出jing
        cout<<str[3]<<endl;  //输出g
        return 0;
    }

    str:指针数组,str的值是这个数组首个元素的地址,这个地址存放了0xA

    地址    元素          地址    元素

    str     0xA          0xA    welcome\0

    str+1    0xB          0xB    to\0

    str+2    0xC          0xC    Fortemedia\0

    str+3    0xD          0xD    Nanjing\0

    char**p=str+1;

    p首先和*结合,说明p是一个指针,指向char*类型

    str+1: str数组第二个元素存放的地址,所以p存放的是地址str+1

    str[0]=(*p++)+2;

    *p:p所存地址str+1这个地址放的值,即0xB

    *p+2,即该地址后面的第三个字符,即to后面的‘0’

    p=p+1,因为p指向的char*,所以p=p+4,即p指向地址str+2,即p存放的值是地址str+2

    则地址  元素

    str    0xB+2,即to后面‘\0’的地址

    str[1]=*(p+1);

    p+1,指向str+3地址,改地址存放的值是0xD;

    所以*(p+1)的值为0xD,cout输出0xD开始到‘\0’的内容,即即Nanjing;

    则地址  元素

    str+1  0xD,即Nanjing中N的地址

    str[2]=p[1]+3;

    p存放的值为str+2,p[1]等价于*(p+1),即str+3地址存放的值0xD;

    0xD+3,即输出Nanjing从j开始到‘\0’的字符

    则地址  元素

    str+2  0xD+3,即Nanjing中j的地址

    str[3]=p[0]+(str[2]-str[1]);

    str[2]-str[1] = 3

    p[0]等价于*p,p存放的值是str+2,所以*p的值是0xD+3;

    所以str[3] = 0xD+3+3,即输出Nanjing的第6位开始的值,即g到'\0';

    则地址  元素

    str+3  0xD+6,即Nanjing中g的地址

  • 相关阅读:
    Bootstrap<基础十四> 按钮下拉菜单
    Bootstrap<基础十三> 按钮组
    Bootstrap <基础十二>下拉菜单(Dropdowns)
    Bootstrap<基础十一>字体图标(Glyphicons)
    Bootstrap<基础十> 响应式实用工具
    Bootstrap<基础九>辅助类
    Bootstrap <基础八>图片
    Bootstrap <基础七>按钮
    Bootstrap<基础六> 表单
    Bootstrap <基础五>表格
  • 原文地址:https://www.cnblogs.com/pukaifei/p/5401066.html
Copyright © 2011-2022 走看看