当前位置: 代码迷 >> C语言 >> printf中有&怎相样用
  详细解决方案

printf中有&怎相样用

热度:461   发布时间:2007-06-01 12:34:18.0
printf中有&怎相样用
#include<stdio.h>
#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

----------------解决方案--------------------------------------------------------
因为用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'}

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",&amp;a[2]);意思:从字符串数组a的第2个字符显示输出,其他与此类推。
----------------解决方案--------------------------------------------------------
..........那个是字符串的输出好吗?
----------------解决方案--------------------------------------------------------
char a[10]="HOLLAND";
char b[]="CHINA";
分配的时候是连续的
所以&a[10]是b[]的首地址!
请多指教!~

----------------解决方案--------------------------------------------------------
  相关解决方案