c语言的指针和结构体.pptVIP

  • 7
  • 0
  • 约2.73千字
  • 约 39页
  • 2021-01-27 发布于河北
  • 举报
C 语言中的指针与结构体;指针的概念;指针变量所指向的变量的类型;取地址运算()和间接访问运算(*);a;赋值运算;注意: 指针变量必须初始化。;指针作为函数参数;数组和地址间的关系;任何由数组下标来实现的操作都能用指针来完成 int a[100], *p; p = a; 或 p = a[0]; ;用指针实现内存动态分配 ;动态存储分配 ;动态内存分配的步骤 ;动态存储分配函数malloc();malloc()示例;动态存储释放函数free() ;分配调整函数realloc() ;结构体;结构体的定义;结构体的嵌套定义;结构体变量的定义和初始化;2. 混合定义 在定义结构体类型的同时定义结构体变量 struct list{ char name[10]; int age; char telephone[13]; } friend1, friend2; 3. 无类型名定义 在定义结构体变量时省略结构体名 struct { char name[10]; int age; char telephone[13]; } friend1, friend2; ;结构体变量的初始化;结构体变量成员的使用;struct list{ char name[10]; int age; char telephone[13]; } friends[10]; 结构数组friends,它有10个数组元素,从friends[0]到friends[9],每个数组元素都是结构体类型struct list变量。;结构体数组的初始化 ;结构体数组元素 ;结构体指针;结构体指针的使用;结构体指针作为函数参数;源程序;多文件结构;示例;#include SqList.h //各操作的实现 Status InitList_Sq(SqList L) { L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if (!L.elem) exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; return OK; } Status DetroyList_Sq(SqList L) { if (L.elem) free(L.elem); return OK; } Status ClearList_Sq(SqList L) { if (L.elem) { L.length=0; L.listsize=0; } return OK; };int ListEmpty_Sq(SqList L) { return (L.length==0); } int ListLength_Sq(SqList L) { return L.length; } Status GetElem_Sq(SqList L,int i,ElemType e) { if (i1 || i=L.length) return ERROR; e=L.elem[i-1]; return OK; } ;Status ListInsert_Sq(SqList L,int i,ElemType e) { ElemType *newbase,*p,*q; if (i1 || iL.length+1) return ERROR; if (L.length=L.listsize) { newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); if (!newbase) exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREMENT; } q=(L.elem[i-1]); for (p=L.elem[L.length-1];p=q;p--) *(p+1)=*p; *q=e; L.length++; return OK; };Status ListDelete_Sq(SqList L,int i,ElemType e) { ElemType *p,*q; if (i1 || iL.length) return ERROR; p=(L.elem[i-1]); e=*p; q=L.elem+L.length-1; for (++p;pq;++p) *(p-1)=*p; L.length-

文档评论(0)

1亿VIP精品文档

相关文档