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

来源:5-1 数组申明的内存排列

慕哥6358579

2017-10-07 16:57

#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


写回答 关注

1回答

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

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

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

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

    慕粉0827...

    gcc -v 显示自己的编译器版本

    2017-10-12 15:17:06

    共 1 条回复 >

Linux C语言指针与内存

指针-C语言的核心,代领大家对c语言有更加深刻的理解

116475 学习 · 250 问题

查看课程

相似问题