C语言学习笔记

分享一下我的C语言学习笔记,知识点可能不多,但是都是一些初学者需要注意的细节。

放一个数据进栈叫压栈
栈只能从下往上压栈
删除一个栈里的数据叫出栈
只能从上往下出栈
'\0'的ascall码值为0
assert()//断言,头文件为assert.h ,如果不满足括号内的条件,就会报错。
const后加一个数据,表示这个数据不可更改。格式:const+数据类型+数据名   ps:可以通过地址改。必须在储存指针变量时前面也加const。const放在*左边时,锁定的是*p,也就是不能改变p指向地址所存储数据的值,但可以改变p的值。放在*右边时,锁定的是p的值,也就是不能把别的数据的地址赋给p。
char一个字节
short两个字节
float四个字节
double四个字节
long 四个字节
longlong八个字节
提升时按照原来第一次声明的类型提升
1E10=1.0*10的十次方
整形可以用limits.h头文件中的函数查到能储存数据的范围(取值范围)
浮点型可以用float.h查取值范围
假如有一个数组arr[10];则arr为首元素地址,&arr[0]为首元素地址,&arr为数组地址
数组指针格式int(*p)[]
二进制浮点数在储存形式为(-1)^S*M*2^E
*(-1)^s表示符号位,当s-0,V为正数;当s=-1,V为负数
M表示有效数字,大于等于1,小于2,
E表示指数位。
P9 26.数
举例来说:十进制的5.0,写成二进制是 101.0,相当于 1.01x242 。那么,按照上面的格式,可以得出s=0    ,M=1.01,E=2。
十进制的-5.0,写成二进制是-101.0,相当于1.01x2^2。那么,s=1,M=1.01,E=2
IEEE 754规定:对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。(M统一不储存小数点前的1)
E不全为0或不全为1
这时,浮点数就采用下面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1,比如:0.5(172)的二进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位。则为1.0*2/-1),其阶码为-1+127=126,表示为011.11110,而尾数10去掉整数部分为0,补齐0到23位00000000000000000000000,则其二进制表示形式为:

0 01111110 00000000000000000000000

E全为0
这时,浮点数的指数E等于1-127(或者1.1023)即为真实值 ,有效数字M不再加上第一位的1,而是还原为
0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。
E全为1
这时,如果有效数字M全为0,表示+无穷大(正负取决于符号位s)
&函数名 和 函数名都是函数的地址
typedef是在计算机编程语言中用来为复杂的声明定义简单的别名(重新定义的简单别名应写在原来的定义方式定义名称的地方)
如:typedef int array[2];array等价于 int [2]定义; array a声明等价于int a[2]声明
函数指针的用途:转移表
void*无类型指针,可以接收任意类型的地址
void*类型指针不能进行解引用操作不能进行加减整数的操作
字符串比较不能直接用><=来比较,应该用strcmp函数。头文件为string.h
格式为strcmp(字符串1,字符串2)如果1>2则返回一个大于零的数,如果1=2则返回一个等于零的数,小于则返回一个小于0的数
qsort函数的参数:第一个参数是待排序数组的首元素地址
第二个参数是待排序数组的元素个数
strlen数数组是数到/0为止
size_t就是unsigned int
两个无符号数数运算还是无符号数
字符串用“”
单个字符用‘’
strcat追加
strncpy当被拷贝元素低于所输入数字时默认拷贝0。拷贝时数据单位为字节
strncat追加时如果输入的数大于追加的数组里的数字,将不再追加
NULL指空指针
NUL/Null指‘/0’
strstr函数查找字符串时,如果找到了,会把这个字符串从找到的地方向后打印一直到/0,如果查找的字符串中有两个被查找的字符串,返回的是第一个字符串的地址
strerror函数可以把错误码返回成错误信息
fopen函数可以用来打开文件,第一个参数为文件名+后缀,第二个参数为打开方式如“r”为读此文件。返回类型为FILE*,若打不开,则会返回空指针。
errno 是一个全局的错误码的变量    
当c语言的库函数在执行过程中,发生了错误,就会把对应的错误码,赋值到errno中,头文件为errno.h
字符分类函数,符合条件则返回一个非零的数 不符合则返回0。字符分类函数有以下这些:
{
isciitrl    任何控制字符    
isspace    空白字符:空格'',换页\f',换行'\n',回车\r',制表符'\t'或者垂直制表符”\v    
isdigit    十进制数字 0~9    
isxdigit    十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F    
islower    小写字母a~Z    
isupper    大写字母A~Z    
isalpha    字母a~z或A~Z    
isalnum    字母或者数字,a~z,A~Z,0~9    ispunct    标点符号,任何不属于数字或者字母的图形字符(可打印)    
isgraph    任何图形字符    
isprint    任何可打印字符,包括图形字符和空白字符
}
字符分类函数及字符转换函数头文件都为ctype.h
memmove负责有重叠部的分拷贝
哪怕相同成员列表的匿名结构体,其类型均不一样
链表中的结点既需要能存储数据,又要能够找到下一结点的位置。存放数据的地方叫数据域,存放指针的地方叫指针域。
两个地址之间的距离称为偏移量,单位是字节。
结构体内存的对齐
1.第一个成员在与结构体变量偏移量为0的地址处。
2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
对齐数=编译器默认的一个对齐数 与 该成员大小的较小值(VS中默认的债为8)
3.结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。
4 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。
offsetof是宏,头文件是stddef.h用于计算偏移量的大小
位段冒号后的数为比特位
枚举的可能取值叫枚举常量
C语言源代码-->预编译-->编译-->链接-->可执行程序
联合体也叫共用体
把一个低字节内容的地址存在低地址处,高字节内容存在高字节处称为小端存储
把一个低字节内容的地址存在高地址处,高字节内容存在低字节处称为大端存储
在从左往右输入一组十六进制数时,底地址也是从左往右变为高地址,顺着为大端,逆着为小端
static修饰局部变量使其生命周期变长
static修饰全局变量/函数使其作用域发生变化,但是不改变生命周期(只能在声明其的文件内使用)
动态内存分配有malloc,free,calloc,realloc四个函数
静态区也叫数据段
打开文件时使用相对路径的话,..表示上一级路径.表示当前路径
打开文件是用‘w’(只写)建立一个新文件销毁旧文件
3.14后带f表示flooat型 不带f为double型
fread的返回值为读取的数据有效个数
EOF是文件结束的标志值为-1
perror函数打印输入的信息并会在信息后加冒号,空格和错误所对应的错误码所表示的信息
ferror(FILE*)如果有错误,返回真
feof(FILE*)如果是遇到EOF结束的则返回真
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Astrologer298

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值