二维数组和动态内存分配

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?
字符和字符型的区别?

posted @ 2020-05-10 03:44  GoblinQ  阅读(743)  评论(0编辑  收藏  举报
复制代码