字符串scanf问题
请问为何下面这段代码中,标蓝色的&,加与不加,结果都一样呢?#include<stdio.h>
int main()
{
char name;
float height,weight;//此处必须是float,必须与取得weight和height类型一致
printf("请输入您的姓名:");//此处可以不使用换行符\n
scanf("%s",&name); //读取字符串使用%s
printf("请输入您的身高:");
scanf("%f",&height);
printf("请输入您的体重:");
scanf("%f",&weight);
printf("========== 正在为您转换 ==========\n");
height=0.3937*height;
weight=2.2046*weight;
printf("%s的身高是%.2f(in),体重是%.2f(lb)\n",name,height,weight);
return 0;
}
name 是一维字符数组指针,& name 是二维字符数组指针,二者仅仅在含义上有差别,但是,二者指向的内存地址是相同的。不信,你可以在程序中加上下面 2 句:
printf("%p\n" , name) ;
printf("%p\n" , & name) ;
看看是不是这样。
页:
[1]