目录
顺序表类型定义
typedef struct{
ElemType data[];
int length;
}SqList; //顺序表类型
//typedef char ElemType
//typedef int ElemType
数组静态分配
typedef struct{
ElemType data[MaxSize];
int length;
}SqList; //顺序表类型
数组动态分配
typedef struct{
ElemType *data; //数组首元素的地址
int length;
}SqList; //顺序表类型
SqList L;
L.data = (ElemType *) malloc (sizeof(ElemType)*MaxSize);
- malloc(m)函数,开辟m字节长度的地址空间,并返回这段空间的首地址
- sizeof(x)运算:计算变量x的长度
- free(p)函数,释放指针p所指变量的存储空间,即彻底删除一个变量
C++的动态存储分配
new 类型名T(初值列表)
//int *p1 = new int
//int *p1 = new int(10);
申请用于存放T类型对象的内存空间,并依初值列表赋以初值结果值
成功:T类型的指针,指向新分配的内存
失败:0(NULL)
释放
delete 指针P
功能:释放指针P所指向的内存。P必须是new操作的返回值
参数传递的两种方式
- 传值方式(参数为整型、实型、字符型)
传递值时,函数修改的是副本的值,实参的值不变
- 传地址(参数为指针变量;参数为引用类型;参数为数组名)
① 形参发生变化影响实参
#include <iostream.h>
void swap(float *m,float *n){
float t;
t = *m;
*m = *n;
*n = t;
}
void main(){
float a,b,*p1,*p2;
cin>>a>>b;
p1 = &a; p2 = &b;
swap(p1,p2);
cout<<a<<endl<<b<<endl;
}
②形参变化不影响实参
#include <iostream.h>
void swap(float *m,float *n){
float *t;
t = m;
m = n;
n = t;
}
void main(){
float a,b,*p1,*p2;
cin>>a>>b;
p1 = &a; p2 = &b;
swap(p1,p2);
cout<<a<<endl<<b<<endl;
}
数组名作参数
①传递的是数组的首地址
②对形参数组所做的任何改变都将反映到实参数组中
#include<iostream.h>
void sub(char b[]){
b[] = "world";
}
void main(){
char a[10] = "hello";
sub(a);
cout << a << endl; //world
}
引用类型作参照
引用:用来给一个对象提供一个代替的名字
#include <iostream.h>
void main(){
int i = 5;
int &j = i; //j是i的一个代替名;i改变,j也改变
i = 7;
cout<<"i="<<i<<"j="<<j; //i=7;j=7
}
#include <iostream.h>
void swap(float &m,float &n){
float temp;
temp = m;
m = n;
n = temp;
}
void main(){
float a,b;
cin>>a>>b;
swap(a,b); //m是a的一个引用
cout<<a<<endl<<b<<endl;
}
①传递引用给函数与传递指针的效果是一样的,形参变化实参也发生变化
②用引用比用一般变量传递参数的时间和空间效率都好