事实上,scanf()函数中%c并非是用来输入单个字符的,而是用来输入一组字符的。
例如:
char a[3]; scanf("%3c",a);
其中“3”规定了输入数据的宽度,当然宽度为“1”的时候,%c确实可以用来输入单个字符。但是认为
%c这个格式转换只是用来输入单个字符的确实大错特错,而且可能会产生一个很严重的潜在的BUG。
联系下%nd,n规定了输入数据的宽度,但是与%nc不同的是,%nd只是输入了单个整形数据,这个整形数据宽度不大于n。
复习下关于数组的知识点:
初始化中给数组部分元素赋值,那么剩下的元素系统默认赋值0.
如果是在输入中给部分元素赋值,剩下的没有赋值的元素,其值是随机数。
形参中对数组的定义,如double a (double a[n]),这个n是没有意义的,因为形参类型double[n],
而调用时作为实参的数组名类型确实double *,也就是说这里的实参本质只是一个指向某个double类型数据的指针而已,
它本身并不包含任何数组大小方面的信息。正确的写法是double a (double [],int ).