基础知识
- 变量类型
- 控制语句
- 函数
- 逻辑结构和存储结构
1、变量类型
1.基本类型
数值类型:
short,int,long, float,double(存储各种数字比如整数、小数)
最常用的有int(存储整数),float(存储小数)字符类型:
char(存储字符A,B,C)
int,float,char的用法
int a;
int b=1;
int b,c,d=2;//为什么需要进行初始化,那是由于定义的变量的值是不确定的,变量定义的时候我们系统为它分配存储单元,但是这个存储单元的值是不确定的
a=1;d=b;//存取
char a;
char b='A';
char b,c,d='a';
2.指针型
存取变量地址的变量类型
int *p1=&A;
int *P2=&B;
char *p3=C;
p1=&D;
E=*p1;//取值
NULL是不指向任何地址的特殊标志,其值为0,初始化指针常用,如int *p4=NULL
地址 | 变量 |
---|---|
0x01 | A(int) |
0x02 | B(float) |
0x03 | C(char) |
ox04 | D(int) |
3.构造类型
- 数组:相同类型的变量排成一列所构成的变量集
int B[100];//长度为100,存储范围是0~99
int A[5]={9,3,2,1,5};//初始化A
A:
变量 | 9 | 3 | 2 | 1 | 5 |
---|---|---|---|---|---|
下标 | 0 | 1 | 2 | 3 | 4 |
存取:
a=A[0];//a的值为9
A[1]=b;//A[1]与b值相同
需要将不同类型组合在一起来解决问题?
School_Name;
School_Address;
School_Area;
typedef struct
{
int a;
float b;
char c;
...
}结构体名;
typedef struct 结构体名
{
int a;
float b;
char c;
struct 结构体名 *d;
...
}结构体名;
- 结构体:不同类型变量组合在一起构成的变量
typedef struct
{
int a;
float b;
char c;
...
}S;
S s;
s.a=1;
s.b=1.111;
s.c='A';
R=s.a;
4.void
它主要用于定义没有返回值的函数
void F()
{
...
...
return;
...
}
2.控制语句
1.判断语句
if(条件)
{
...
}
if(条件)
{
...
}
else
{
...
}
if(条件)
{
...
}
else if(条件)
{
...
}
...
else //这里的else可以没有
{
...
}
条件:可以是一个表达式
a==b
a+b
1+1
!a
也可以是一个变量或字面值
a
2
‘a’
上边的一切如果结果为0表示假,非0表示真,真则进入if块,否则有else 块则进入else块
2.循环语句
for(int i=0;i<N;++i)//这里的++i和i++效果没有区别,但是++i效率相对较高,但现在的编译器 优化效果很好没有什么区别
{
...
}
执行过程:定义循环变量i->判断->{…}->循环变量的变化
while(条件)
{
...
}
do
{
...
}while(条件)
3.函数
定义:类比成一个工厂,输入原料,输出产品
返回值类型 函数名 (参数定义列表)//形参
{
…
}
调用方法:
函数名(参数列表)//实参,注意实参与形参意义对应
(1)
int add(int a,int b)
{
return(a+b);
}
result=add(1,2);//调用
(2)
void F()
{
...
}
F();//调用 也能用return,跳过剩下的语句
example:
int result=0;
void getResult(int r)
{
++r;
}
getResult(result);//调用 这时候改变的是r result的值没有改变
要想改变result的值那需要这样写
//变量是基本上述的基本类型 int,char
//C++写法
int result=0;
void getResult(int &r) //引用型
{
++r;
}
getResult(result);//调用
//C语言写法
int result=0;
void getResult(int *r) //引用型
{
++(*r);
}
getResult(&result);//调用
//变量是指针型
//C++写法
int *P=NULL;
void getResult(int *&p) //引用型
{
...
p=q;
...
}
getResult(p);//调用
//C语言写法
int *P=NULL;
void getResult(int **p) //引用型
{
...
p=q;
...
}
getResult(&p);//调用
4.逻辑结构与存储结构
1.逻辑结构
- 没关系(集合)
- 一对一(线性表)
- 一对多(树)
- 多对多(图)//有回路、环
2.存储结构
- 顺序结构
A | B | C | D | E | F | G |
---|---|---|---|---|---|---|
ad | ad+1 | ad+2 | ad+3 | ad+4 | ad+5 | ad+6 |
只要知道第一个地址和长度就能知道其他任何一个存储单元的地址
C语言实现:int Array[7];
- 链式结构
一个地址里面存储数据以及下一个存储单元的地址
… | A ad1 | … | B ad2 | … | C adx | … |
---|---|---|---|---|---|---|
… | ad0 | … | ad1 | … | ad2 | … |
C语言实现:
typedef struct LNode
{
int data;
struct LNode *next;
}LNode;
L=(LNode*)malloc(sizeof(LNode));//(LNode*)用于强制转换
A->next=B;
B->next=C;
对比:哪个支持随机存取(Random Access)?
顺序结构。