二、零碎知识点总结

二、零碎知识点总结
1.标识符的判断:C语言中的标识符有:关键字、预定义标识符、用户标识符

​ 在C中,表示符通俗的说就是定义变量的变量名,函数名等 (* 注意更关键字区别开来,别混了)

​ 规则:就那几个,字母、下划线开头,后面跟数字或者字符亦或者下划线,区分大小写啊,不能用关键字啊,便于理解记忆啊;

2.字符的赋值问题

​ 1.字符顾名思义就一个字符啦,出错首当其冲便是将字符串赋值给字符,如 ch = “abc”,ch 是char类型,而“abc”是char *类型,类型都不一样,肯定不能赋值啦;

​ 2.这种情况:ch=0x123 出现这种情况,类型不一定,0x123是int类型,ch是char类型,即使存在隐似类型转换,整型转换成char类型,会造成精度丢失问题。

3.const和*p问题

​ 1.const int * p=&i const修饰的是 * p,意味着 * p不可以被改变,修饰的是这段内存空间,改变不了i的值;

但是指针p可以指向任意一个地址

​ 2.int * const p=&i const 修饰的是 p,以为p是一个常量 然后 如果有进行操作 p=&a 不行,p不能被修改;

口诀:左定值,右定向。

const在*的左边不能改变字符串常量的值;

const在*的右边不能改变指针的指向;

4.(++p)/(p+1)区别:(++p)改变的是自身指针的位置,(p+1)虽然位置改变,但是p的位置没有改变。
5.二叉树度、叶子节点

​ 1.什么叫叶子结点:度为零的叫叶子结点,说白了就是它下面没有节点了。

​ 2.什么叫度:直白的说一个节点由几个子节点就是度。

这里有个结论:二叉树中叶子节点的个数比度为2的节点的个数多一个。

6.运算符优先级和网络模型快速记忆口诀

​ 运算符优先级:单算移关与 异或逻条赋 逗号

​ 网络模型七层: 物联网 船画室 应 对应物理层 数据链路层 网络层 传输层 会话层 表示层 应用层

​ 网络模型四层:物理链路层 网络层 传输层 会话层

7.异或的简便算法

​ 通过半加的方式来进行,如图所示:

在这里插入图片描述

8.行指针和列指针的问题

​ 详细说法:csdn链接:https://blog.csdn.net/sudazf/article/details/8661511

1.行指针:直白的意思就是一个二维数组

int a[3][5];

​ 看了这张表,就明白了 行指针意义:

写法解释指针类型
a+0或&a[0]指向第1个一维数组的地址(指向第1行)行指针
a+1或&a[1]指向第2个一维数组的地址(指向第2行)行指针
a+2或&a[2]指向第3个一维数组的地址(指向第3行)行指针

​ 行指针是指向数组的指针,即上面几种指针类型中的 int (*a)[5];

2.列指针:简单的说就是行指针加第几列的数,表示列指针。

写法解释指针类型
a[0]+0或&a[0][0]指向第1行第1列的地址列指针
a[0]+1或&a[0][1]指向第1行第2列的地址列指针
a[1]+0或&a[1][0]指向第2行第1列的地址列指针
a[1]+1或&a[1][1]指向第2行第2列的地址列指针

​ 列指针经过一次解引用就可以转化成二维数组中实际的值

​ 对行指针解引用,可以得到列指针,对列指针解引用,可以得到具体的元素值;**

​ 二维数组的数组名就是一个行指针**,一位数组的数组名是列指针

9.size_t/ssize_t

​ size_t unsigned int 无符号的整型 %u

​ ssize_t signed int 有符号的整型

10.声明问题

​ 函数的声明一般我们写在主函数前面,但是其实函数声明可以写在任意位置,不过要在使用前声明;

包括宏定义,可以写在函数体外,也可以写在函数体内,不过一般不建议这么做。

11.数组的赋值问题
char a[10];
a = “china”; 错误		叫赋值
char a[10] = "china";叫初始化
strcpy(a,"china";	正确
a[0] = “china”[0];    正确
a[1] = '\0';
char a[10] = "china"; 叫初始化
12.指针数组和数组指针赋值问题

在这里插入图片描述

如图:

str2 是数组,从常量区拷贝到栈区,可以被修改。

13.变量的内存地址
编译指令:arm-linux-命令
ld:链接	cc:编译	as:汇编	cpp:预编译
arm-linux-addr2line:将地址转化为代码常量;
全局变量有在静态区的有不在静态区的;
arm-linux-nm:提取程序的符号所在内存的地址。
对于每一个符号来说,其类型如果是小写的,则表明该符号是本文件的;大写则表明该符号是global(extern)的。
全局变量存放在静态存储区,位置是固定的。 局部变量在栈空间,栈地址是不固定的;堆手动分配。
D data段
T text文本段
R 只读数据段
初始化的变量 .data段 
未初始化的全局变量 .bss段
大小写 :大写:非静态变量,无static 小写 静态变量static修饰
img
14.

​ 简单变量作为实参时,将把该变量所占内存单元的值传递给形参,实参和形参各占不同的内存单元,传递完后,实参和形参不再有任何联系,所以这种传递方式也叫做单向值传递方式。

​ ifstream默认以输出方式打开文件,ofstream默认以输出方式打开文件,例如:ifstream file();是以输入方式打开文件;ofstream file();以输出方式打开文件

​ 预处理中文件包含的概念,包含文件中可以包含其他文件;#include 可以出现在程序文件的中间;包含文件被修改了,包含该文件的源程序必须重新进行编译和连接;在一个程序中,允许使用任意数量的#include命令行;

​ fork()是全部复制

​ vfork()是共享内存

​ clone()是可以将父进程资源有选择地复制给子进程,而没有复制的数据结构则通过指针的复制让子进程共享,具体要复制哪些资源给子进程,由参数列表中的clone_flags来决定。另外,clone()返回的是子进程的pid。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值