考研学习记录-c语言(重点与易忘点)-2(持续更新)

C语言易忘知识点以及常见问题

目录

一、整型常量的不同进制表示

二、运算符

三、数组

四、解决scanf函数缓冲区吃回车问题

五、字符串相关函数(gets在C11标准中去除了,部分学校机试不可用)

六、指针

七、结构体

八、中级知识(与数据结构相关)


一、整型常量的不同进制表示

        1.零碎知识

                ①int类型为4字节,32位2进制,最高位为符号位,0为正数,1为负数;

                ②十进制转换二进制,不断除2,得商继续除,余数为对应2进制位,从低到高

二、运算符

        1.逻辑非 (!) > 算术运算符 > 关系运算符 > 逻辑与 (&&) 和逻辑或 (||)

        2.sizeof不是函数,是运算符

        3.|| 和 &&有需要注意的,当 || 左边的式子为真时,不执行右边的表达式,当 && 左边的式子为假时,不执行右边的表达式。

三、数组

        1.数组传参给子函数时,形参获取的是首地址(指针),无法在子函数里面用sizeof(数组名)语句获取数组中存放的数据的真正大小,因为真正获取到的是指针的大小(8字节)。

        2.scanf函数读入字符数组时,遇到空格会停止输入。

四、解决scanf函数缓冲区吃回车问题

        简单粗暴的方法:

	fflush(stdin);//直接清空标准输入缓冲区,让scanf没机会偷吃回车

五、字符串相关函数(gets在C11标准中去除了,部分学校机试不可用)

        1.strlen函数

                计算字符串长度,该返回值为长度值(其中不包含字符串的结束符“\0”)

        2.strcat函数与strcpy函数(这两个函数的第一个参数不得为字符串常量!!!,原因是都会把操作后的值给到第一个参数,而字符串常量没有地址,所以不行)

                ①strcat函数直接拼接第二个参数到第一个参数后面。

                ②strcpy复制替换(切记,是完全替换,就算被替换的字符串比替换的字符串长,其比它长出来的部分也会消失,如char a[5] = "abcd", char b[2] = "e", strlen(a, b),结果a数组变成"e",a比b长的部分"bcd"会消失,也就是说,b复制到a上,不仅是相同的长度对应字符会被替换,原字符串长出来的部分也会被替换为无)

        3.strcmp函数

                比较两个字符串的大小(原理是按每位字符的ASCII码比较大小,也可以简单理解为,按学习中的字典顺序,排得越后则越大),第一个参数的字符串大,则返回值为1,相等为0,小则为-1)

六、指针

        1.指针大小问题,若程序为64位,则寻址范围为64位即指针大小为8字节,若程序为32位,则寻址范围为32位即指针大小为4字节

        2.malloc动态内存申请。

                ①用malloc函数可以申请空间。用法为,先定义指针变量,然后敲入语句:指针变量 = (需要的指针类型)malloc(需要的大小),然后就能获取了。需要头文件stdlib。

字符型空间例子:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	char *c;
	c = malloc(4);//多一位存结束符
	c = "abc";
	printf("*c = %s\n", c);
	return 0;
}

运行结果:

整型空间例子:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int *c;
	c = malloc(4);//int一个数即占4个字节,先只给一个
	c[0] = 1;     //只有一个整型数据,只能赋值一个
	printf("*c = %d\n", *c);
	return 0;
}

运行结果:

                ②注意void指针类型不能偏移、如果是字符型指针,malloc要多给一位长度用来存结束符/0

七、结构体

        1.结构体大小不是由成员总和,而是有对照最大成员对齐的规则。

八、中级知识(与数据结构相关)

        1.栈从0开始,一次栈满是maxsize - 1.

        2.队列

                ①循环队列队头队尾初始为0,队头为队头元素,队尾为队尾元素后一位

                ②链表队列队头队尾初始为NULL,队头指向第一个元素,队尾指向最后一个元素

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值