数组的问题》char s[2];printf("%d %d",s,s)输出什么结果?
我想知道的是,下面的输出语句输出了什么?#include<stdio.h>
main()
{
char s[2];
printf("%d",s);
}
为什么下列
#include<stdio.h>
main()
{
char s[2];
printf("%d %d",s,s);
}
输出是不一样的呢?
我知道上面方式是不正确的,只是想知道输出的结果是怎么形成的?
----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{
char s[2];//字符数组没有赋值,其值是未知的
printf("%d",s);//这里,参数s.指的是s[0]
}
为什么下列
#include<stdio.h>
main()
{
char s[2];//字符数组没有赋值,其值是未知的
printf("%d %d",s,s);这里的两个s都指的是s[0]
}
lz对数组还没有理解
----------------解决方案--------------------------------------------------------
s指的是首地址,输出的是地址,好像没有问题
----------------解决方案--------------------------------------------------------
编译地址不一样...
----------------解决方案--------------------------------------------------------
谢谢
----------------解决方案--------------------------------------------------------
终于弄明白了.
#include<stdio.h>
main()
{
char s[2];
printf("%d %d",s,s);
}
s是首元素的地址用printf("%p %p",s,s);可以打印
而printf("%d %d",s,s);打印的是将十六进制的地址转换成十进制打印
之所以2次不同是因为地址被:号分成2部分,1次打印第一部分,2次打印第二部分
但不知道为什么这样分?
----------------解决方案--------------------------------------------------------
以下是引用PcrazyC在2007-4-5 11:56:14的发言:
s指的是首地址,输出的是地址,好像没有问题
s指的是首地址,输出的是地址,好像没有问题
----------------解决方案--------------------------------------------------------
内容被作者删除
[此贴子已经被作者于2007-4-5 19:45:20编辑过]
----------------解决方案--------------------------------------------------------