大神何在...关于指针的一项困惑
程序1:
#include <stdio.h>
int main()
{
char planets[9][8] = {"Mercury","Venus","Earth",
"Mars","Jupiter","Saturn",
"Uranus","Nepturn","Pluto"};
int i;
for (i = 0;i < 9;i++)
{
printf("%s\n",planets[i]);
printf("%s\n",&planets[i]);
}
return 0;
}
planets[i]是指针,那&planets[i]就是指针的指针,那为嘛两个printf的输出一模一样??
输出结果如下:
Mercury
Mercury
Venus
Venus
Earth
Earth
Mars
Mars
Jupiter
Jupiter
Saturn
Saturn
Uranus
Uranus
Nepturn
Nepturn
Pluto
Pluto
程序2:
#include <stdio.h>
int main()
{
char planets[9][8];
int i;
for (i = 0;i < 9;i++) //这里改用手工录入
{
printf("Enter string %d: ",i+1);
scanf("%s",planets[i]);
}
/*
for (i = 0;i < 9;i++) //这里改用手工录入
{
printf("Enter string %d: ",i+1);
scanf("%s",&planets[i]); //这里scanf函数第二个参数为&planets[i]
}
*/
for (i = 0;i < 9;i++)
{
printf("%s\n",planets[i]);
printf("%s\n",&planets[i]);
}
return 0;
}
无论是用程序2中的for循环录入,还是用程序2中被注释部分的for循环录入,都可以实现将字符串存入二维数组中,而且下面的printf函数一样正常输出
问题就来了,到底是就这两个函数特殊,还是只要是用二维数组存储字符串集,难道planets[i]与&planets[i]效果都一样???
大神现身....