乐鱼第八章 处置动态数据
具体介绍

  第七章惩罚杂乱数据要紧实质要紧实质案例:惩罚案例:惩罚““学生新闻办理编制学生新闻办理编制””的人数的人数转变转变运用指针惩罚呈现学生人数转变运用指针惩罚呈现学生人数转变案例执行案例执行学生操练学生操练拓展拓展小结小结用数组来存储众位学生的新闻。因为正在用数组来存储众位学生的新闻。因为正在CC讲话中数组只可界说讲话中数组只可界说定长的,而正在实践中无法事先领略学生的人数,从而无法确定定长的,而正在实践中无法事先领略学生的人数,从而无法确定命组的巨细。数组的巨细。以是当学生人数转变的期间,运用数组就有点阻挠易了:由于以是当学生人数转变的期间,运用数组就有点阻挠易了:由于假设将数组界说过长,虚耗空间;界说太短,又不足用。假设将数组界说过长,虚耗空间;界说太短,又不足用。现正在正在这里引入一个现正在正在这里引入一个CC讲话中要紧的观点讲话中要紧的观点--------指针。通过运用指指针。通过运用指针,就能够很容易的实行学生人数的转变,按照实践情景来申针,就能够很容易的实行学生人数的转变,按照实践情景来申请存储空间。从而不会显示存储空间的虚耗或不足用题目。请存储空间。从而不会显示存储空间的虚耗或不足用题目。正在本章,将连接圆满正在本章,将连接圆满““学生新闻办理编制学生新闻办理编制””案例措施。正在上一案例措施。正在上一章案例措施的底子上,能够实行对学生人数的转折实行存储空章案例措施的底子上,能够实行对学生人数的转折实行存储空间的动态分派办理。简直是姑且确定学生人数,实行存储空间间的动态分派办理。简直是姑且确定学生人数,实行存储空间的动态分派的动态分派惩罚惩罚““学生新闻办理编制学生新闻办理编制””人数变人数转变动假设正在措施中界说了一个变量乐鱼,正在编译时就给这个变量分派假设正在措施中界说了一个变量,正在编译时就给这个变量分派内存单位。编制按照措施中界说变量的类型,分派特定长度内存单位。编制按照措施中界说变量的类型,分派特定长度的空间。的空间。内存区的每一个字节都有一个编号,这便是内存区的每一个字节都有一个编号,这便是““所在所在””。它就。它就相当于旅舍中的房间号或是学生宿舍的宿舍号一律。相当于旅舍中的房间号或是学生宿舍的宿舍号一律。正在所在所记号的内存单位中存放数据,就相当于旅舍中各个正在所在所记号的内存单位中存放数据,就相当于旅舍中各个房间中住搭客一律。房间中住搭客一律。按照内存编号也能够无误地找到所需求的内存单位。以是内按照内存编号也能够无误地找到所需求的内存单位。以是内存单位的所在与内存单位的实质是两个分歧的观点。存单位的所在与内存单位的实质是两个分歧的观点。运用指针惩罚人数转变运用指针惩罚人数转变--指针指针运用指针惩罚人数转变运用指针惩罚人数转变--指针指针0变量x变量y界说了一个界说了一个intint型变量型变量x,x,编译时编制分派了编译时编制分派了20002000到到20032003四个字节给四个字节给变量变量xx。界说了一个。界说了一个floatfloat型变量型变量yy,编译时分派了,编译时分派了30003000到到30033003四个四个字节给变量字节给变量yy。广泛咱们只合切变量的第一个字节的编号。。广泛咱们只合切变量的第一个字节的编号。将变量的第一个字节编号称该变量的所在。将变量的第一个字节编号称该变量的所在。20002000是变量是变量xx的所在,的所在,30003000是变量是变量yy的所在。把一个变量的所在称为该变量的的所在。把一个变量的所在称为该变量的““指针指针””。。端庄地说,一个指针便是一个所在。端庄地说,一个指针便是一个所在。有了指针的界说,就可往后体会一下变量的值的读取操作。正在措施中大凡有了指针的界说,就可往后体会一下变量的值的读取操作。正在措施中大凡是通过变量名来对内存单位实行存取操作的。如是通过变量名来对内存单位实行存取操作的。如printf(printf(“,x)的践诺的践诺是如此的:按照变量名与所在的对应相干(这个相干是正在编译时确定的),是如此的:按照变量名与所在的对应相干(这个相干是正在编译时确定的),找到变量找到变量xx的所在的所在20002000,然后从由,然后从由20002000开首的四个字节中取出数据,把它开首的四个字节中取出数据,把它输出。这种按变量所在存取变量值的体例称输出。这种按变量所在存取变量值的体例称““直接访谒直接访谒””体例体例别的还能够采用一种称为别的还能够采用一种称为““间接访谒间接访谒””的体例,将变量的体例,将变量xx的所在存放正在另的所在存放正在别的一个变量中。外一个变量中。CC讲话中能够界说如此的一种出格变量,它存放变量的地讲话中能够界说如此的一种出格变量,它存放变量的所在。假设界说了一个变量址。假设界说了一个变量x_pointerx_pointer,用来存放整型变量,用来存放整型变量xx的所在,能够通的所在,能够通过下列语句将过下列语句将xx变量的所在变量的所在20002000存放到变量存放到变量x_pointerx_pointer中:中:x_pointer=x_pointer=这这时,x_pointerx_pointer中的值便是中的值便是20002000,即变量,即变量xx所占用单位的开始所在。要变量所占用单位的开始所在。要变量xx的值时,也就能够通过间接体例:先找到存放变量的值时,也就能够通过间接体例:先找到存放变量xx所在的变量,从中取所在的变量,从中取到到xx的所在(的所在(20002000),然后到),然后到20002000到到20032003字节中取出变量字节中取出变量xx的值。运用指针惩罚人数转变运用指针惩罚人数转变--指针指针2000X_pointer:(3012-3015)X_value(2000-2003)X_value一个变量的所在称为该变量的一个变量的所在称为该变量的““指针指针””。假设用一个变量专。假设用一个变量特意来存放别的一个变量的所在(即指针),则它就称为门来存放别的一个变量的所在(即指针),则它就称为““指指针变量针变量””。也能够说存放变量所在的变量是指针变量。。也能够说存放变量所在的变量是指针变量。界说一个指针变量必需搜罗界说一个指针变量必需搜罗33个实质:个实质:((11)指针类型注明,即界说变量为一个指针变量;)指针类型注明,即界说变量为一个指针变量;((22)指针变量名;)指针变量名;((33)指针变量所指向的变量的数据类型。)指针变量所指向的变量的数据类型。其大凡界说局势为:其大凡界说局势为:基类型基类型**指针变量名指针变量名此中此中**呈现这是一个指针变量,基类型呈现指针变量指向的变呈现这是一个指针变量,基类型呈现指针变量指向的变量的数据类型。基类型必需指定,一个指针变量只可指向同量的数据类型。基类型必需指定,一个指针变量只可指向同 一个类型的变量 一个类型的变量 指针惩罚人数转变 指针惩罚人数转变--指针变量的界说 指针变量的界说 int *p1 float *p2 Student *stu 当界说了一个指针变量之后,和其他变量一律,就应当给它赋值。当界说了一个指针变量之后,和其他变量一律,就应当给它赋值。 没有赋值的指针变量不行运用。指针变量的赋值只可是授予所在, 没有赋值的指针变量不行运用。指针变量的赋值只可是授予所在, 绝对不行授予其他数据,也便是让它指向它界说的阿谁基类型的 绝对不行授予其他数据,也便是让它指向它界说的阿谁基类型的 一个变量。 一个变量。 指针变量的两个运算符指针变量的两个运算符 ((11)):取所在运算符,也便是说取变量的所在。 :取所在运算符,也便是说取变量的所在。 ((22))**:指针运算符,也便是说取指针所指变量的实质。:指针运算符,也便是说取指针所指变量的实质。 a为变量为变量aa的所在, 的所在,*p *p为指针变量 为指针变量pp所指向的存储单位中的内 所指向的存储单位中的内 容。和和**互为逆运算。对付运算符互为逆运算。对付运算符 和和* 这两个运算符的优先级别相像。假设没有括号,像这两个运算符的优先级别相像。假设没有括号,像*i_pointer, *i_pointer,计计 算的期间是遵循自右向左联络。是以正在这里先是策动 算的期间是遵循自右向左联络。是以正在这里先是策动* *i_pointer, i_pointer,它它 便是变量 便是变量ii,再践诺 ,再践诺 运算,以是 运算,以是*i_pointer *i_pointer便是 便是ii变量的所在。 变量的所在。 指针惩罚人数转变 指针惩罚人数转变--指针操作符 指针操作符 shortint i=10 short int i=10 shortint *i_pointer short int *i_pointer i_pointer=i_pointer= 如此界说的指针变量如此界说的指针变量i_pointer i_pointer就指向变量 就指向变量ii。假设界说变量 。假设界说变量ii的的 期间,它分派的空间的首所在为 期间,它分派的空间的首所在为2000 2000。当运转 。当运转i_pointer=i i_pointer=&i的的 期间,指针变量中就存储了变量 期间,指针变量中就存储了变量ii的所在 的所在2000 2000。。 *i_pointer*i_pointer为指针变量 为指针变量i_pointer i_pointer所指的存储单位的实质,也就 所指的存储单位的实质,也就 是变量 是变量ii的值 的值10 10。。 指针惩罚人数转变 指针惩罚人数转变--指针操作符 指针操作符 20002004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 指针变量 typedefstruct typedef struct intyear; intyear; //年年 intmonth; intmonth; //月月 intday; intday; //日日 typedefstruct typedef struct charname[40]; charname[40]; //学生姓名 学生姓名 charsno[20]; charsno[20]; //学号 学号 charsid[20]; charsid[20]; //身份证号码 身份证号码 Datebirth; Datebirth; //出诞辰期 出诞辰期 charaddress[200]; charaddress[200]; //家庭所在 家庭所在 Student;指针惩罚人数转变 指针惩罚人数转变--构造类型指针 构造类型指针 sno name sid birth address 40字节 20字节 20字节 12字节

 

Copyright 2012-2023 leyu·乐鱼(中国)体育官方网站 版权所有 HTML地图 XML地图--备案号:豫ICP备20000747号  备案号:豫ICP备20000747号  
地址:河南省郑州市金水区丰庆路126号3号楼24层2401号  邮箱:19659724@qq.com  电话:13938535296