注释VS的快捷键
main函数的位置可以在任意位置,但是如果在主函数之中调用了哪些函数,必须在main函数前对其所调用函数进行生命或包含其被调用函数的头文件。
printf是库函数,需要包含头文件
只有%c不会过滤空白字符(空格,制表符,换行符),所以要在%c前面加上一个空格
%s指的是,从第一个非空字符开始,到空白字符为止。
输入的如果不是占位符表示的数据类型,则不会读入
例如mink/*我爱我自己/rich
输出mink rich
用
返回size_t的类型别名(这个有的编译器是专指64位无符号数的)(但是具体不知道是什么值)
输出用%zd
sizeof()里面的表达式不会真实的参与计算,而是根据表达式的类型来得出大小。
跟最近的if匹配
需要的几个函数
#include
#include
#include
srand(time(NULL));
int magic =rand()%100 +1;
用双引号或者单引号括起来的1个或者多个字符。
例如'\0dd' 注意单括号括起来的里面只能是一个字符,双引号里面应该写字符串,
用来对变量、符号常量名、函数、数组、类型、等命名的有效字符序列统称标识符(identifier)。
规定标识符只能由字母、数字和下画线3种字符组成,且第一个字符必须是字母或下画线。
自己调用自己,把大的事化小,拆解问题。
例如:输出1234的每一个数字并且中间有空格
1.定义函数p()
2.求p(1234)则要求p(123)+printf(4),依次弄下去
3.结果为p(1)+2+3+4;
阶乘,二叉树,汉诺塔,裴波拉契,快速排列
归并,青蛙跳台阶,遍历文件
步骤:
1.定义函数功能
2.寻找递归的终止条件
3.递归函数的等价关系式
让局部变量的生命周期变成和程序的一样长,但是作用域不变 (从栈区到静态区)
让全局变量只能在这一个文件中使用,修饰函数也是一样的效果。(抹除外部链接属性)
让一个全局变量(在A文件)可以在其他文件使用。
指的就是函数内某段代码实现循环
二进制是满二进一
三位一组,分别乘以2的0,1,2次方
四位一组,分别乘2的0,1,2,3次方
对于有符号整数,0代表正数,1代表负数。
typedef unsigned int uint//这样使用unsigned int 时候可以用uint达到同样的效果
typedef int * p;//这个就把指针变量int *重命名为p
typedef int(*p)[5];//把数组指针变量重命名为p
结构体.为直接访问,->为间接访问
%操作符的操作数只能是整数
负数求模的规则是,结果的正负号由第一个运算数的正负号决定。
switch语句中的default子句可以放在任意位置
C语言中的switch case中的case后面仅可以跟整形常量或常量表达式。
没有规定case必须在default之前,一般case最好放在default之前
“==”为什么不行?
“==” 比较的不是字符串的内容,它是在比较指针,或者说它仅比较两个字符串的首地址,而不会比较字符串每个字符。
那其实接下来应该问的问题是,为什么会只比较首地址呢?
因为早期的C语言只能使用标量。
简单的说,标量scalar就是指char, int, double, enum等数值类型,以及指针。像数组、结构体、共同体这样将多个标量组合起来的类型,被称为聚合类型aggregate。
字符串其实就是char类型的数组,也就是说它不是标量,因此在C中不能用“==”比较。