引用的概念
某个变量的引用,相当于该变量的别名
定义一个变量的引用语法:
类型名 &引用名 = 某变量名:
int n = 4
int &m = n
定义应用是一定要将去初始化为引用某个变量;初始化后,它就一直引用该变量,不会再引用其他的变量了
引用的一种重要的应用——将形参的值返回给主调函数对应的实参
类型的定义
typedef: 为现有的类型创别名
动态内存分配
sizeof()
判断数据类型或者表达式值的长度的运算符
参数是类型说明符或表达式,返回一个表达式的值或一个类型的变量所占的内存字节数
malloc(n)
参数n为一个整数,内存申请n个字节的存储空间返回首地址,返回值要强制类型转换为某种指针类型。若失败,返回空指 针NULL(0)
例如int *p;p = (int *) malloc (sizeof(int) * 100)
前面得分(int *)为强制类型转化
free(p)
释放p所指向的内存空间
realloc(p,n)
申请n个存储空间,并将p所指向的存储单元的内容复制到新申请的存储单元的首部分,返回新申请内存空间的首地址
动态存储分配主要应用于链式存储
有以下结点的定义:
struct Node{
int Data;struct Node *next;
};
新建一个结点,并给结点各个成员赋值的操作:
struct Node *p;
p = (struct Node *)malloc(sizeof(struct Node));
p->Data = a;
p->next = NULL;
指针与链表
指针:即地址
int a;
a = 60;
int *p; //p为int型的指针
p = &a; //&为取其地址,*p等于a;
结点的定义:
struct LNode{
int Data;struct LNode *next;
}node1,node2,*p;
单链表:只有一个指针域的链表
结点的定义:
typedef struct Node{
int data;struct Node *next;
}Lnode,*List;
List L = NULL,r = NULL; //L是头,r是尾
结点的建立:
List p = (List)malloc(sizeof(Lnode));
p->data = a;
p->next = NULL;
结点的入链:
if( L == NULL) L = p;
else r->next = p;
尾指针后移:
r = p;
单链表的输出:
void print(List L){
while( L ){
printf("%d ",L->data);
L = L->next;
}
}