weixin_44753276
素衣胡思君
采纳率0%
2021-03-04 21:03

请问各位大神,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;
    
}

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • kof98765 kof98765 1月前

    有空纠结这东西?

    点赞 评论 复制链接分享
  • weixin_42910064 泡视界 1月前

    有区别吗?

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

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

    点赞 1 评论 复制链接分享
  • qq_34124780 qq_34124780 1月前

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

    点赞 1 评论 复制链接分享
  • weixin_44753276 素衣胡思君 1月前

    这是网课老师的:

    这是我的结果:

    点赞 评论 复制链接分享
  • weixin_45485578 超级套娃 1月前

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

    点赞 1 评论 复制链接分享
  • include_iostream_ include_iostream_ 1月前

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

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

    点赞 1 评论 复制链接分享