请问各位大神,C语言打印地址的结果都是什么格式的呀?为什么我的跟别人说的不太一样?

身为学习C语言的小菜鸡,看网课的时候跟着一起码代码,发现自己打印输出的变量地址格式跟老师讲的很不一样,我的就一堆0,老师的就是0x开头的,想问问各位大佬知道是怎么回事么?(我用的是Dev c++,win10系统)

我的:

&i=000000000062FE0C
s1=0000000000404000
s2=0000000000404000
s3=000000000062FE00
here!s1[0]=h
here!s3[0]=B

然后这是网课老师的看起来正常的:

&i=0xbff03d64
s1=0xfdf7c
s2=0xfdf7c
s3=0xbff03d50
Here!s3[0]-B
[Finished in 0.3s]

附上源代码,基本我们俩是一样的代码:

int main(){
    int i=0;                              //定义的i以及s1,s2都是本地变量,统一放在一个地方 
    char *s1="hello world";     //而s1和s2指向的 "hello world"字符串,统一放在另一个地方,叫只读的代码段 
    char *s2="hello world"; 
    char s3[]="hello world"; 
    
    printf("&i=%p\n",&i);
    printf("s1=%p\n",s1);    
    printf("s2=%p\n",s2);    
    printf("s3=%p\n",s3);
    s3[0]='B';
    printf("here!s1[0]=%c\n",s1[0]);
    printf("here!s3[0]=%c\n",s3[0]);
    return 0;
    
}

 

“基本一样”?方便把对方的代码也放出来吗?你描述的行为差异似乎与格式串有关键性的关联。

我在我的机器上用MSVC和MinGW都试了一下,都和你的结果一样,和你的老师结果不同。

你都说了是基本  他是16进制的 以0x开始的数据表示16进制  

运行环境的问题。你老师是在X86的环境下运行的,你是在x64下面运行的,当然不一样了。

有区别吗?

你这结果哪不正常?不是16进制吗???

&i=000000000062FE0C
s1=0000000000404000
s2=0000000000404000
s3=000000000062FE00

这是网课老师的:

这是我的结果:

有空纠结这东西?