二维数组和动态内存分配
C 语言还提供了四个可以修饰 int 的关键字:short、long、signed,以及 unsigned。
无符号整型没有负数,比有符号整型大一倍。
无符号整数,不能表示负数。
所有没有标明 unsigned 的整数类型默认都是有符号整数。
C语言只规定short <= int <= long int,字节长度跟操作系统和编译器有关,long int长度至少32位,而64位类Unix系统为64位。
一般把 short 称为短整型,把 long 称为长整型,把 long long 称为超长整型,把 int 称为整型。
%s是字符串,%c输出字符;
"123”其实是由’1’、’2’、’3’、’\0’组成
eg:
char a[] = "123":
char a[] = {'1','2','3'}
字符串的输出”%s”,’\0’是不会输出的
第一周指针中学习的动态内存分配(malloc):
就是向系统要空间,有借有还,
1.头文件#include<stdlib.h>
2.返回的结果是void*,可使用强制类型转换来改变数据类型
3.向molloc申请的空间的大小是以字节为单位的,
如:
(int*)malloc(n*sizeof(int)
4.free() 只能还申请来的空间首地址。
free()常见的问题及解决:(不好的习惯将导致大程序崩溃)
1.申请了没free--长时间运行内存下降(牢记malloc 和free搭配使用)
2.free了再free,地址变了,还回去的不是空间的首地址(程序开始的时候要有自己的框架,多读他人的代码学习,自我总结实践中遇到的问题)
putchar表示向标准输出(运行的黑框)写入一个字符
int putchar(int d)表示参数类型是int,返回结果也是一个int。
EOF(-1)表示写失败
二维数组的计算
int a[2][4]
siaeof(ages)={(24)4}=32
https://www.runoob.com/w3cnote/c-static-effect.html 该链接参考static
printf(%[flags][width][.prec][hlL]type)
flags
- 左对齐
- 下一个参数
width][.prec]
这部分指明了输出的宽度 小数点位数
%-8.6d代表左对齐,输出宽度为8个字节,小数点后6位。
这里的字符数width可以用,表示用下一个参数作为宽度。
例如 printf(“%d”, 6, 12);是用6当做输出宽度,相当于 printf(“%6d”, 12);
小数点后面的也是类似的 %6.*f *处会被参数中的数字代替
n代表读入写出的个数
printf 函数
scanf中的 * 代表跳过
scanf(" * %d%d",num);
123 345
输出的是345,前面那个被跳过
字节和字符 字节是单位,字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。
据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。
scanf中的%i比%d灵活、多变,为啥不经常用i而是d?
字符和字符型的区别?