二维数组和动态内存分配

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⼆维数组和动态内存分配
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)表⽰写失败
⼆维数组的计算
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?
字符和字符型的区别?。

相关文档
最新文档