强行复习第二天:c语言(上)
今天是c语言,刷过好几天题之后,好像没有多少需要复习。
不知道是不是一种错觉。。。
c语言中typedef struct 和 struct的区别:
首先看结构:
typedef struct CLinkList
{
int data;
struct CLinkList *next;
}node;
struct CLinkList
{
int data;
struct CLinkList *next;
};
其实typedef struct完成了两件事,只不过写在了一起:
typedef struct CLinkList
{
int data;
struct CLinkList *next;
}node;
==
struct CLinkList
{
int data;
struct CLinkList *next;
};
+
typedef struct CLinkList node;
对比一下:
当不使用typedef时,定义变量要用struct ClinkList XXX
而不能用ClinkList XXX
因为struct ClinkList表示一个结构类型
而用typedef那一种,等于定义完结沟体之后,将这种结构体的数据类型名称定义成了node
这个时候你再定义变量的时候,就可以写:node XXX了
更方便了不是吗~
万年记不住的位和字节:
1字节(B) = 8位(bit)
单位字(word) 也成字,对不同机器不同。
对于16位机,1字=2字节=16位
对于32位机,1字=4字节=32位
对于64位机,1字=8字节=64位
int 4字节
char 1字节
float 4字节
double 8字节
在计算取值范围的时候注意unsigned、0之类的。
另外记一下:
#define BYTE 8
无分号,有井号。这个基础又不常用。自己写小的东西的时候不怎么用,以后大型开发应该用得上吧~
浮点型表示:
float只能够提供6位有效数字,double15位,long double 18位。
浮点型允许指数形式表示:2.1E5 表示2.1乘以10的5次方。
C语言输入输出:
虽然c语言的输入输出相对于c++来说有点鬼畜,但是有的时候真的很好用。
比如说有要求你输出小数点后几位的那种。
scanf("%lf%lf",&len,&wid);
printf("l=%lf,w=%lf",len,wid);
char c=getchar(); 这个经常用来接收回车之类的。
putchar('A');
putchar(getchar()); 输入后显示
记得用c的时候要#include <stdio.h>,scanf要加&
%d 十进制int
%f float
%lf double
%c char
%s string
%o 八进制unsigned int
%x 十六进制unsigned int
%X 同上
%10.2f 表示总共最多10位,小数点后2位
\n 回车
\t 换行
\0 空格
运算符与表达式:
强制类型转换:(int)a;
++i; 先自增再运算
i++; 先运算再自增
运算符优先级。数值小的优先级高
switch啊:
switch(a)
{
case 0:
XXXXXXX ;
break;
case 1:
XXXXXXX ;
break;
case 2:
XXXXXXX ;
break;
}
循环跳出的问题:
break 结束本层循环,从这一层循环里出去
continue 结束这一轮,进行本层循环的下一轮
goto 就不说了,被Dijkstra老爷子封杀了。。。只能在跳出错误中用,还只能往下跳。。。
迭代定义:迭代是一种循环算法,它是不断用新值取代变量的旧值,或由旧值递推出变量的新值的过程。
行吧,看了半本。
明天再看半本,c语言就齐活了。
晚上准备准备东西,
快16点半了,收拾收拾去吃饭。
Kevin就快回来了,虽然回来了会很快就走,但是回来就比不回来强,哈哈哈。
棒棒~
我想吃拉面了。。。。
走~