正在学习的新手 发表于 2020-3-21 07:04:36

小白疑问

#include <stdio.h>

int main()
{
      char name;
      float height, weight;

      printf("请输入您的姓名:");
      scanf("%s", name);

      printf("请输入您的身高(cm):");
      scanf("%f", &height);

      printf("请输入您的体重(kg):");
      scanf("%f", &weight);

      printf("========== 正在为您转换 ==========\n");

      height = height / 2.54; // 厘米转换为英寸
      weight = weight / 0.453; // 公斤转换为磅

      printf("%s的身高是%.2f(in),体重是%.2f(lb)。\n", name, height, weight);

      return 0;
}
为什么 第一个printf中 name前没有& 。但其他都有&

rty123 发表于 2020-3-21 07:32:45

name是一个数组名 直接取就可以了

fresh_python 发表于 2020-3-21 07:42:43

你说的时scanf吧,在数组中数组名代该数组的首地址,所以,用scanf输入时,可以不用加取地址符&,

qiuyouzhi 发表于 2020-3-21 08:16:03

接收字符串时可以不写&

Mr丶张 发表于 2020-3-21 08:17:16

name是个数组,name就表示数组的首个元素的地址,high weight都是变量,不能表示地址,前面加&才能取到这个变量的地址

4goodworld 发表于 2020-3-21 09:09:54

简单来说
char name 相似于char* name
而scanf(“%s”,xxx),这个xxx是需要传递指针,在根据上面的类等式子,name就是指针,那么直接写name就行了
页: [1]
查看完整版本: 小白疑问