printf中有&怎相样用
#include<string.h>
void main()
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%s",a[10]);
}听说倒数第二行的a[10]前可以用&,能告诉为什么吗
问题补充:将倒数第二的a[10]改为&a[10]是china
&a[9]是空
8是空
7是空
6是d
5是空
4是a
3是na
2中ina
1是hina
0是china
&a[9]是空
8是空
7是空
6是d
5是空
4是a
3是na
2中ina
1是hina
0是china
----------------解决方案--------------------------------------------------------
因为用printf输出字符串的时候 就是考试它地址啊 你应该知道这个的意思吧:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%s",a);
system("pause");
return 0;
}
那你再看看 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%s",&a[0]);
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%s",&a[1]);
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%s",&a[4]);
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%s",&a[5]);
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%s",&a[10]);
system("pause");
return 0;
}
----------------解决方案--------------------------------------------------------
a[10]={'H','O','L','L','A','N','D'}
copy后
a[10]={'C','H','I','N','A','\n','D'}
----------------解决方案--------------------------------------------------------
不对
以下是引用老糊涂在2007-6-1 13:50:58的发言:
a[10]={'H','O','L','L','A','N','D'}
copy后
a[10]={'C','H','I','N','A','\n','D'}
a[10]={'H','O','L','L','A','N','D'}
copy后
a[10]={'C','H','I','N','A','\n','D'}
copy 后不应是:a[10]={'C','H','I','N','A','\n','D'};
我想应该是 a[10]={'C','H','I','N','A','\0','D'};因为strcpy()这个函数是把全部字符串 连同字符串后面的'\0'一起copy 进去的
你们看看我下面两个程序有什么不同嘛:
1.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%s",&a[6]);//这个地方是 %s
system("pause");
return 0;
}
2.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char a[10]="HOLLAND";
char b[]="CHINA";
strcpy(a,b);
printf("%c",&a[6]);//这个地方是%c
system("pause");
return 0;
}
[此贴子已经被作者于2007-6-1 15:28:40编辑过]
----------------解决方案--------------------------------------------------------
"\n"我写错了,应该是"\0"呵呵
----------------解决方案--------------------------------------------------------
printf("%s",&a[2]);意思:从字符串数组a的第2个字符显示输出,其他与此类推。
----------------解决方案--------------------------------------------------------
..........那个是字符串的输出好吗?
----------------解决方案--------------------------------------------------------
char a[10]="HOLLAND";
char b[]="CHINA";
分配的时候是连续的
所以&a[10]是b[]的首地址!
请多指教!~
----------------解决方案--------------------------------------------------------