身为学习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
这是网课老师的:
这是我的结果:
有空纠结这东西?