char man[];
现在我脑子里的问题:假如char man[];里面我就算是放1,运行后,也可以随便输数组,不限制大小那种.知识点:"char a; //这是一个常规的字符变量 他能存放1个字符
char name; // 这是一个字符数组,他能存放256个字符"
这个理解 但是我[]里面放1,一个字符我也不能无限输入吧{:9_234:}
希望有个大佬给我讲解一下 很懵的状态...{:10_266:}
单纯的char man[]是不可以的,中括号里不指定空间的,也就是初始化时可以用比如char man[]="aaas"这样的
而中括号里填数,填多大的数就是申请多大的空间,这是申请静态空间,后面你还会遇到申请动态空间的 wp231957 发表于 2021-5-12 17:56
单纯的char man[]是不可以的,中括号里不指定空间的,也就是初始化时可以用比如char man[]="aaas"这样的
...
小甲鱼那个列题里面为何上来就给个256空间呀?我在里面给一个字符空间,他也可以输入名字呀{:10_266:}S1E8:字符和字符串 | 课后测试题及答案 --最后一个大题 小罗的白弟弟 发表于 2021-5-12 18:04
小甲鱼那个列题里面为何上来就给个256空间呀?我在里面给一个字符空间,他也可以输入名字呀S1E ...
你的问题我们看了,似懂非懂
简单来说就是,看不懂你的问题
小罗的白弟弟 发表于 2021-5-12 18:04
小甲鱼那个列题里面为何上来就给个256空间呀?我在里面给一个字符空间,他也可以输入名字呀S1E ...
我在里面给一个字符空间,他也可以输入名字呀
把你说可以的这个代码贴出来看看
小罗的白弟弟 发表于 2021-5-12 18:04
小甲鱼那个列题里面为何上来就给个256空间呀?我在里面给一个字符空间,他也可以输入名字呀S1E ...
首先,一个字节用来存储名字,肯定是不够
其次,这个256是需要自己测算的,假设不考虑少数民族和外国人,那么名字也就是4个汉字就够用了,那么我们申请9个字节的空间就可以了,当然了,现在计算机内存都大,所以你别说申请256就是申请10000也无所谓了 人造人 发表于 2021-5-12 18:22
我在里面给一个字符空间,他也可以输入名字呀
把你说可以的这个代码贴出来看看
#include <stdio.h>
int main()
{
char name;//很懵逼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;
} 请试一下 谢谢{:10_245:} 人造人 发表于 2021-5-12 18:22
我在里面给一个字符空间,他也可以输入名字呀
把你说可以的这个代码贴出来看看
https://z3.ax1x.com/2021/05/12/gwO23d.png
是因为编译器的原因吗? wp231957 发表于 2021-5-12 18:33
首先,一个字节用来存储名字,肯定是不够
其次,这个256是需要自己测算的,假设不考虑少数民族和外国人 ...
https://z3.ax1x.com/2021/05/12/gwO23d.png
就这个很懵逼会不会是编译器的原因?(麻烦你了,谢谢!) 小罗的白弟弟 发表于 2021-5-12 18:53
就这个很懵逼会不会是编译器的原因?(麻烦你了,谢谢!)
这个可能是后面的内存没人接管,又恰好处于可写的状态,所以不会报错,但是这是一个概率问题,假设你要做一个大的项目,你会去堵这个概率吗,所以一定要申请一个足够大的空间 小罗的白弟弟 发表于 2021-5-12 18:47
请试一下 谢谢
数组越界访问,这个代码在其他运行环境上,很有可能会出问题
$ ./main
请输入您的姓名:abcd
请输入您的身高(cm):1
请输入您的体重(kg):1
========== 正在为您转换 ==========
@����的身高是0.39(in) , 体重是2.21(lb)。
wp231957 发表于 2021-5-12 19:05
这个可能是后面的内存没人接管,又恰好处于可写的状态,所以不会报错,但是这是一个概率问题,假设你要做 ...
茅塞顿开,谢谢大佬{:10_256:} 人造人 发表于 2021-5-12 19:05
编译器或者和这个大佬说的差不多吧?
这个可能是后面的内存没人接管,又恰好处于可写的状态,所以不会报错,但是这是一个概率问题,假设你要做一个大的项目,你会去堵这个概率吗,所以一定要申请一个足够大的空间 小罗的白弟弟 发表于 2021-5-12 19:09
编译器或者和这个大佬说的差不多吧?
对 人造人 发表于 2021-5-12 19:17
对
🆗非常感谢{:9_228:} 小罗的白弟弟 发表于 2021-5-12 19:25
🆗非常感谢
char name; 这个256是一个预测的数字,因为C语言比较笨,它不会检测边界,所以这里尽可能给它一个合适的尺寸(太大浪费空间,太小容易造成溢出越界)。
虽然 char name 没问题,但是如果输入超过 1 个字符,其实就已经是发生越界了,这在一些操作系统中是不被允许的,极有可能引发错误。就相当于咱客货车超载,虽然也能开,但你别遇上交警……
页:
[1]