数据结构与算法基础——第02周-类C语言有关操作补充1

一 概述

  • 元素类型说明
  • 数组的定义
  • C语言的内存动态分配
  • C++的动态存储分配
  • C++中的参数传递

二 元素类型说明

2.1 顺序表的类型定义

1
2
3
4
typedef struct{
ElemType data[];
int length;
} SqList; //顺序表类型

ElemType说明(可以是字符,可以是Int)

1
2
typedef char ElemType; //ElemType类型为字符
typedef int ElemType; //ElemType类型为整数

2.2 顺序表的类型定义二

1
2
3
4
5
6
7
8
9
typedef struct{
float p;
int e;
}Polynomial;

typedef struct{
Polynomial *elem;
int length;
}SqList;

三 数组的定义

3.1 数组的静态分配和动态分配

数组静态分配(定义前,MaxSie为固定值):

1
2
3
4
typedef struct{
EleType data[MaxSie];
int length;
}SqList;//顺序表类型

数组动态分配(知道存储元素的类型):

1
2
3
4
typedef struct{
EleType *data;
int length;
}SqList;//顺序表类型

3.2 动态分配说明

1
2
SqList L;
L.data=(ElemType*)malloc(sizeof(ElemType)*MaxSize);

四 C语言的内存动态分配(见三)

1
2
SqList L;
L.data=(ElemType*)malloc(sizeof(ElemType)*MaxSize);
  • malloc(m)函数:开辟m字节长度的地址空间,并返回这段空间的首地址
  • sizeof(x)运算:计算变量x的长度
  • free(p)函数:释放指针p所指变量的存储空间,即彻底删除一个变量

注:需要加载头文件:<stdlib.h>

五 C++的动态存储分配

5.1 分配内存(new 类型名T(初值列表))

1
2
int *p1=new int;
int *p1=new int(10);

功能:申请用于存放T类型对象的内存空间,并依初值列表赋以初值

结果值:

  • 成功:T类型的指针,指向新分配的内存
  • 失败:0(NULL)

5.2 释放内存(delete 指针P)

功能:释放指针P所指向的内存。P必须是new操作的返回值

六 C++中的参数传递

6.1 参数传递

函数调用时传送给形参表的实参必须与形参三个一致:

  • 类型
  • 个数
  • 顺序

6.2 参数传递的两种方式

  • 传值方式(参数为整数、实型、字符型等)
  • 传地址
    • 参数为指针变量
    • 参数为引用类型
    • 参数为数组名