一、指针
它提供了一种较为直接的地址操作手段。正确的使用指针,可以方便、灵活而有效的组织和表示复杂的数据结构。动态内存分配和管理也离不开指针。指针是一种数据类型,具有指针类型的变量称为指针变量,指针变量是用于存放内存单元地址的。指针也是先声明后使用的,声明指针的语法形式是:数据类型*标示符。
(1)在定义指针的同时进行初始化赋值,语法形式为:
存储类型 数据类型 *指针名=初始地址;
(2)在定义之后,单独使用赋值语句。赋值语句的语法形式为:
指针名=地址;
注意:
(1)可以声明指针常量的指针,此时不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象。
(2)可以声明指针类型的常量,这是指针本身的值不能被改变。
(3)一边情况下,指针的值只能赋值给同类型的指针。但是有一种特殊的void类型指针,可以存储认可类型的对象地址,就是说任何类型的指针都可以赋给void类型的指针变量,通过void类型的指针便可以访问任何类型的数据。
(4)指针是一种数据类型,与其他数据类型一样,指针变量也可以参与部分运算,包括算术运算、关系运算和赋值运算。
(5)指针的算术运算是和数组的使用相联系的,因为只有在使用数组时,才会得到连续分布的可操作内存空间。
(6)当函数的返回值是指针类型时,这个函数是指针函数。使用指针函数的最主要目的是在函数结束时把大量的数据从被调函数返回到主调函数中。而通常非指针型函数调用结束后只能返回一个变量或对象。指针函数的一般定义形式为:
数据类型 *函数名(参数表)
{
函数体
}
(7)函数指针在使用之前也要赋值,使指针指向一个已经存在的函数代码的起始地址。一般语法为:函数指针名=函数名;
二、P126
E2.
(1) Node first_node(‘0’);
Node *p0=&first_node;
Node *p1=new Node(‘1’);
P0->next= p1;
(2) Node first_node(‘0’);
Node *p0=&frist_node;
Node *p1=new Node(‘1’,p0);
Node *p2=new Node(‘1’,p0);
(3) Node first_node(‘0’);
Node *p0=&first_node;
Node *p1=new node(‘1’);
P0->next=p1;
Node *p2=new Node(‘2’,p1);
P1->next=p2;