ZXPoo 发表于 2021-11-4 20:17:05

中括号里为啥要有256,scanf里name前面为啥不用加&

#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;
}

jackz007 发表于 2021-11-4 20:21:00

本帖最后由 jackz007 于 2021-11-4 20:22 编辑

#include <stdio.h>

int main()
{
      char name;               // 定义变量 name 为可以容纳 256 个字符的字符数组,这样,name 就代表这个存储空间,同时,也是这片存储区域的开头地址。
      float height, weight;

      printf("请输入您的姓名:");
      scanf("%s", name);            // name 本身就是内存地址,所以,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;
}

ZXPoo 发表于 2021-11-4 20:22:48

jackz007 发表于 2021-11-4 20:21


为啥必须要写256?

jackz007 发表于 2021-11-4 20:26:19

本帖最后由 jackz007 于 2021-11-4 20:29 编辑

ZXPoo 发表于 2021-11-4 20:22
为啥必须要写256?

         256 是作者认为在任何情况下 name 中需要存储的内容都不会超过 255 个字符(最后一个字符必须用于存储字符串结束标志 '\0')。不是必须 256,其它数值也是可以的,只要这个空间足够容纳 name 可能出现的任何字符长度就行。

ZXPoo 发表于 2021-11-4 20:29:25

jackz007 发表于 2021-11-4 20:26
256 是作者认为在任何情况下 name 中需要存储的内容都不会超过 255 个字符(最后一个字符必须用 ...

懂了,谢谢
页: [1]
查看完整版本: 中括号里为啥要有256,scanf里name前面为啥不用加&