基础知识

基础知识

  • 变量类型
  • 控制语句
  • 函数
  • 逻辑结构和存储结构

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...
}

执行过程:定义循环变量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.逻辑结构

  • 没关系(集合)
    基础知识_第1张图片
  • 一对一(线性表)
    基础知识_第2张图片
  • 一对多(树)
    基础知识_第3张图片
  • 多对多(图)//有回路、环
    基础知识_第4张图片

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)?
顺序结构。

你可能感兴趣的:(数据结构)