问答详情
源自:5-1 数组申明的内存排列

我的执行结果和GDB打印顺序怎么和老师的不一样?

#include <stdio.h>
int main()
{
    int a=3;
    int b=2;
    int array[3];
    array[0]=1;
    array[1]=10;
    array[2]=100;
    int *p=&a;
    int i;
    for(i=0;i<6;i++){
        printf("*p=%d\n",*p);
        p++;
    }
    printf("--------------------------------------\n");
    p=&a;
    for(i=0;i<6;i++){
        printf("p[%d]=%d\n",i,p[i]);
    }
}

http://img3.mukewang.com/59d896f50001c62f08000600.jpg

http://img3.mukewang.com/59d896f5000145bc08000600.jpg

http://img.mukewang.com/59d896f6000197d708000600.jpg


提问者:慕哥6358579 2017-10-07 16:57

个回答

  • 慕粉0827362688
    2017-10-12 15:08:46

    http://img1.sycdn.imooc.com/59df14100001911213660730.jpg

    我用vs2017调试的,老师讲的各个int变量的排列是跟编译器有关的。

    只要知道,指针是地址就行了。想要能完全弄懂,可以看看汇编相关知识,会讲到小端,大端,原码补码等相关知识。