4-8学习日志 二叉树的遍历 二叉树的遍历分成三种,按照根节点的访问先后分为: 先序遍历:先访问根节点,然后访问左子树, 最后访问右子树。 中序遍历:先访问左子树,然后访问根节点, 最后访问右子树。 后续遍历:先访问左子树,然后访问右子树, 最后访问根节点。 以上图为例,先序遍历的结果为ABC,中序遍历的结果为BAC,后序遍历的结果为BCA 图 c语言中的qsort函数 ...
3-28学习日志 3-28学习日志前后缀与printf的注意事项a++与++a的不同printf 前后缀与printf的注意事项 来自于3G的面试题之一,水还是有点深… a++与++a的不同 #include<stdio.h> int main() { int a = 1, b = 0; int x, y; x = (++a) + (++a) + (++a); y = b++ + b++ + b++; printf("%d %d", x, y); return 0; } 在Dev中x=10,y=6,而在vs中
2020-12-20 宏 编译预处理指令 #开头的是预编译处理指令,它们不是c语言指令,但c语言程序离不开它们 #define来定义一个宏 如果一个宏的值中有其他宏的名字,是会被替换的 如果一个宏的值超过一行,最后一行的末尾需要加\ 没有值的宏 #define _DEBUG 这类宏适用于条件编译的,后面有其他预编译处理这类指令来判断这个宏是否已经被定义过了 1、当前的行号 2、文件名 3、4:日期、时间 像函数的宏 最后输出的值为125 带参数的宏 在大型程序的代码中适用非常普遍 可以非常复杂,如“产生”函数(在#和##帮助
2020-12-11 指 针 即为保存地址的变量 int i; int* p=&i; 即p指向i,p中有i的地址 作为参数的指针 void f(int *p); 在被调用的时候得到了某个变量的地址 int i=0;f(&i); 在函数里可以通过这个指针访问外面的这个i 指针应用场景(一) 交换两个变量的值 传入的参数实际上是需要保存带回结果的变量 指针应用场景(二) 函数返回运算的状态,通过指针运算返回,例如让函数返回特殊的不属于有效范围内的值来表现出错(-1或0) 当任何值都可能为有效数值时,需要分开返回 传
c语言学习周报(2020.11.21-11.28) 字符数组 %c——逐个输入元素和字符(char) %s——整体输入和输出字符串(string) 用格式%c逐个输入时,必须输够定义的字符,否则不会自动加结束符\0。输出时也不会自动检测\0。 用格式%s输入时,数组名本身就代表该数组首地址,无需加&。末尾自动加\0。当输入多个字符串,scanf()中空格为其分隔符,只有第一个空格前的字符串生效。(当输入一句话时,需定义和单词相等数量的数组)(存储了包括\0的n+1个字符) 如果数组中没有\0,输出时会将内存中该数组其他内容也一并输出,直到遇见\0为止