翁恺C语言



辗转相除法,
计算机—程序—算法。
枚举法,二分法。


编辑器---.>编译器--.>运行。
开发效率决定了C语言是一种工业语言。
IDE=集成开发环境。
Dev C++;

Dev c++ 5.6.3.Hello World!

cuocuow错误提示在前后,不确定。

变量定义的一般形式——<类型名称><变量名称> ;


fufuzhi赋值,初始化。



scanf-0-其中末尾format格式,&指针。


const常量的名称一般用全大写来强调是一个常量。

%d %d之间的空格有讲究。不能是其他符号。
\" \"表示引号


double ==%lf
float == %f
int ==%d [-2^31,2^31-1]


zhuzhuyi注意=也是运算符。
计算时间差。
平均值。

嵌入式赋值不被推荐==因为不易阅读。

计算复利:变量,算法,输入输出。
交换变量。
复合赋值=--两个之间不能有空格。
递增递减运算符---他的算子必须是变量,否则没有意义无效。
前缀与后缀有细微的区别。




%x--以十六进制格式输出。
0与o的故事。
if (){}判断语句。
if (){
}
else {}

C语言中-关系运算符的结果是1或者0;
JAVA中则是boolean。
优先级:算术运算>关系运算>赋值。
判断是否相等的==与!=的优先级比其他的关系运算低,连续的关系运算是从左到右的。
//C99注释comment不执行,只是为了方便读懂;
/* */---C99 and ANSI.

i嵌套的if-else一定要加大括号;容易读懂。
else总是和最近的那个if匹配。
注意:else的缩进并不影响if 的匹配。

在if或else后面总是用{}
即使是只有一条语句的时候。
级联:


单一出口。
if只要求()里的值是零或者非零。

在if和else之后必须加上大括号形成语句块;
大括号内的语句缩进一个tab的位置。
多路分支利用switch-case。
switch (type){
case 1: break;
case 2:
break;
default:
}
控制表达式只能是整数型的结果;
常量可以是常数,也可以是常数计算的表达式。


注意case并没有被分割,只有遇到breake才能不执行case。将case视为路牌。


数数字。计算机从右往左。
while
do-while循环。



循环体内要有改变条件的机会。
语法上对,不代表逻辑对。也就是注意死循环。

边界数据。

print发(“in loop/here”)



cnt -1
0 0
-1 -1
循环体中代码行的次序对结果有细微的差别。
#include <stdlib.h>
#include <time.h>
srand (time(0));
int a = rand ();产生真的随机数。
rand()产生随机数。
1234%10
x%n 的结果是【0,n-1】的一个整数。




123
3
0+3=3 12
2
32ret
1 +320=321

阶乘!





for===while



break;打破跳出循环
continue;跳过循环这一轮剩下的语句进入下一轮。
4个人唱歌比喻。

100以内的素数。=嵌套的循环。
前50个素数呢?
\t制表位。
凑硬币。:100元 由10元,20元,50元凑的结果有多少种。 ____bianlbi遍历。
a=100/50,
b=(100%50)/20,
c=((100%50)%20)/10,
100 Yuan == a*50+b*20+c*10.

C语言:goto 语句。label也就是标号;
goto label:
JAVA语言:break label:。
goto适合嵌套循环跳到最外层。
前n项求和。








pow(10,n)=10的n次方。




符合给定条件的整数集。
index


遍历










sizeof()是一个静态运算符,他的结果在编译时刻就决定了,不要在sizeof的括号里做运算,这些运算不会执行的。
char 1,short 2Byte,int 4,long 8,long long 8.
-m32 cahr 1 ,short 2, int 4, long 4, long long 8.










unsign char 不以补码的形式表示,纯二进制数字表示。副作用是无法表示负数。,





计算机内部数据不变只是取决于比怎样读取怎么读。printf强制读取int


%o八进制输出。%x十六进制输出。


为了准确表达硬件。+早期规范。


%e输出形式是科学计数法。%E大写字母。


%.16f表示小数点后十六位,即输出精度。

浮点数有误差。非常正常。
-0.0045浮点数四舍五入则是-0.004因为浮点数有误差,我们其实是对-0.0044999做四舍五入。

printf输出inf表示超过范围的浮点数:+-无穷大
printf输出nan表示不存在的浮点数。

wuwu无穷大可以用浮点表示。浮点
浮点运算有精度。





ASCII。
字符的输入输出:如何输入'1'这个字符给char c?
scanf(“%c”,&c);-->1
scanf(“%d”,&c);-->49

字符计算





常见ASCII码的大小规则:数字< 大写字母 < 小写字母。
1.数字比字母要小。如 “7”<“F”;
2.数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
3.字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
4.同个字母的大写字母比小写字母要小32。如“A”<“a” 。
几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 。



shell 与hello word!
\b回退一格,back space若有再次输入将覆盖,否则不覆盖。

自动类型转换




























函数名与参数值之间不能有空格。



dan单一出口原则。






函数的原型声明(告诉编译器不要乱猜);函数的定义;





















函数声明一定 要在括号里明确参数是什么或者void。



可以嵌套声明。



main()其实也是一个函数,在它之前还有一系列准备工作(yu预编译),所以return 0是有效的;
p处理文件,bat文件。
数组。数组的索引从零开始。




数组的使用:如何定义和使用数组。



左值、右值在指针中讲在c语言中的含义。

c语言开始数组的小标从零开始。

c语言的函数到底是怎么输入输出的?本质是什么?





magic number避免。


搜索:在一组给定的数据中,如何找出某个数据是否存在?


数组的集成初始化、。










一个数组给另一个数组只能采用遍历。










副作用C++

在c语言中平白无故的加入一对大括号往往是用来调试的。


C99中的i内部取代外部。




二维数组。


a[i,j]--括号里边是逗号运算符,表示j。







运算符&



地址符占16字节,p定义了整形所以需要强制类型转换。
64位架构

32位架构



上边A++,++A,A+B均不能取地址。

stack堆栈,分配变量自定向下存储数据变量。


对于数组的地址



指针就是保存地址的变量point


*p是一个int,p是一个指针。
int *p,q 与int* p,q的区别。










32位架构恰好不变,编译不会报错,但运行一定会出错。




状态用return 返回,实际的值用指针方式返回。








一个演员演了两个双胞胎。








数组其实可视为一个常量,故不可以被用来赋值运算。



上边图片是说不能通过*p修改。


如果const在*的后面表示指针不能修改。
在*前边表示*所指的东西不能修改。




指针运算。



指针加一是加一个sizeof()。





两个指针相减是地址差除以sizeof的结果。







动态内存分布。


<stdlib.h>引用malloc返回void *。动态内存分配。free()




1024==1k
1024*1024==1m
1024*1024*100=100m.





malloc+free.架构+经验。
字符串



‘\0’一个字节。0是int4个字节。'0'ASCII=0x30==48十进制。

注意结尾的0需要占据一个字节。



字符串变量















空格






字符串数组






end of file.











spaceASCII32.





chongchongdi不能重叠。







concatenate链接。



不会越界。

返回的是指针,strrchr从右边开始。




保护字符串。


strcasestr忽略大小写来寻找字符串。
枚举








结构













































小端(低位优先)=存储从右向左来存。IBM从左向右,大端小端
x86cpu小段-低位在前。
全局变量









强龙不压地头蛇。




static静态本地变量保持变量。


全局变量存放在代码区,本地变量存放在栈区。
全局变量贴士



二房东。

全局变量是不可存入的。对于多线程是不安全的。
宏定义


macro宏定义。








带参数的宏







macro宏不要加分号


inline机制取代带参数的宏,属于一种函数。

大程序






自己的头文件用“”系统给的标准库的用<>.



extern gAll全局变量声明。



函数的定义是定义,函数的原型是声明。





*格式化输入输出*







9.2表示共有9位且小数点后有2位。





%n读取、写入的个数



gps1083协议。



文件输入输出




<输入
>输出




二进制文件


vim














shu数据库、第三方库
**按位运算**








取反与补码是不一样的。



2次异或相当于什么都没做。
**移位运算**




**位运算例子8**


SFR = special funtion register //特殊功能寄存器





**可变数组==resizable array**




结构不带指针更好,因为可以作为变量。









free安定&create


封装。

获得指针就可以对其进行赋值或者修改。




可变数组的增长










memcpy
可变数组的缺陷



没有连续的内存

**链表**



数据+节点。上图代码行不能使用Node因为它在7行才定义出现。








不要使用全局变量因为不可检测。


第四种方法







尾指针——————没有展开讲述。
遍历list链表
链表的搜索







链表的删除

lianbiao此时学的都是单向链表



边界条件

链表的清除


哨兵节点,双向链表
图形界面软件







DCshe设备上下文



项目属性





acllib的基本绘图函数




坐标系unix也一样。


unix习惯于这样









