C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计
编程技能 a C++语言程序设计
(四)指针与结构体 定义指向结构体类型数据的指针变量 结构指针初始化 例如:struct student {long num; char name[20]; float score;}; student *ps=NULL; 结构指针初始化 将结构变量的地址赋给结构指针 例如: student stu={20041118,"Li Li",81}; student *ps=&stu; 用new运算符申请的动态内存空间的地址对指针赋值 例如:student * ps=new student; C++语言程序设计
(四)指针与结构体 用结构指针访问结构成员 用指向操作符“->”代替原来的点操作符 例如: cout<<ps->score<<endl; 等价于:cout<<(*ps).score<<endl; C++语言程序设计
(四)指针与结构体 例:结构指针的定义和使用 C++语言程序设计 //结构指针的定义和使用 # include <iostream> #include<cstring> using namespace std; struct Employee { char name[20]; unsigned long id; float salary; }; void main() { Employee* prPtr = new Employee; strcpy(prPtr->name,"zhang san"); prPtr->id=98001; prPtr->salary=3350.0; cout <<prPtr->name <<" " <<prPtr->id <<" " <<prPtr->salary <<endl; delete prPtr; } C++语言程序设计
(四)指针与结构体 实例:建立一个单链表用来存储学生的信息 链表 是通过指针链接在一起的一组数据项,是一种可伸缩的动态数据结构 数据项:链表结点 用结构体类型表示 结点数据:存储当前数据 结点链接指针:指向下一结点,表尾结点的链接指针值为0(NULL) 每个结点是在需要时建立的,是动态分配内存的 单向链表:链表以指向第一个结点的指针开始,每个结点包含下一个顺序结点的指针,链表在结点的指针为0(NULL)时终止;通过链接指针,把所有数据项按逻辑顺序链接在一起 C++语言程序设计
(四)指针与结构体 例:单向链表的建立 C++语言程序设计 struct student //声明新的数据类型,链表结点 { long num; //学号 char name[20]; //姓名 float score; //成绩 student * next; //指向下一个学生的指针,链接指针 }; C++语言程序设计
(四)指针与结构体 C++语言程序设计 #include<iostream> #include<iomanip> using namespace std; void main() { student * head=NULL, * temp =NULL; //单链表建立,head 为头结点指针 head = new student; temp = head; int i = 1; while (temp != NULL){ temp->num = i; cout<<“Please input \ name and score for No. “ << i <<endl; cin>>temp->name>>temp->score; temp->next = NULL; i++; if (i >4) break; else{ temp->next = new student; temp = temp->next; } C++语言程序设计
(四)指针与结构体 C++语言程序设计 //单链表的遍历 temp = head; while (temp != NULL){ cout<<setiosflags(ios::left) <<setw(3)<<temp->num <<setw(6)<< temp->name <<setw(6)<<temp->score <<endl; temp = temp->next; } //单链表结点释放 temp = head; while (temp != NULL){ head=temp; temp = temp->next; delete head; } C++语言程序设计