weijun_zhang 发表于 2021-3-31 11:56:32

字符串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;
}

jackz007 发表于 2021-3-31 12:05:57

       name 是一维字符数组指针,& name 是二维字符数组指针,二者仅仅在含义上有差别,但是,二者指向的内存地址是相同的。不信,你可以在程序中加上下面 2 句:
printf("%p\n" , name)   ;
printf("%p\n" , & name) ;
       看看是不是这样。
页: [1]
查看完整版本: 字符串scanf问题