9512.net
甜梦文库
当前位置:首页 >> >>

指针类型及使用



2.8 指针类型及使用
2.8.4 指针与数组 所谓数组的指针即整个数组在内存中的起始地址, 而数组元素的指针是数组中某一元素所占存储单元的 地址。 以前我们引用数组元素时是利用数组的下标进行的, 当我们学到指针后,访问数组元素就可以利用指针来 进行,即可以先使一指针变量指向某一数组元素,然 后通过该指针变量对它所指向的数组元素进行操作。 利用指针法能使目标程序质量高,占内存少,运行速 度快。 2.8.4.1 指向数组元素的指针变量的定义与赋值 指向数组元素的指针变量的定义与以前定义指针变 量的方法相同,只要注意指针变量定义时的类型要与 所要指向的数组的类型一致即可。

2.8 指针类型及使用
如:int a[10]; int *p; p=&a[0]; //把数组元素a[0]的地址赋给指针变量p 。 C++语言中规定:数组名就代表数组首地址。也就 是数组第0号元素的地址。如: int a[10]; int *p; p=&a[0]; /*与p=a;是等价的*/ p=&a[0];与p=a;是等价的。但要注意,其作用是把数 组a 的起始地址赋给指针变量p,而不是把数组a的各元 素的地址赋给p。

2.8.4.2 通过指针变量使用数组元素 假设p为指向某一数组元素的指针变量。C++语言规 定:p+1指向数组的下一个元素。(注意不是单纯的p 加1)。 设定义了一个数组a[10],p的初值为&a[0], 即此时p指向 a[0] a[0]元素,则: (1) p+1 或a+1就是a[1]元素的存储地址,即它们都 指向数组的第1号元素a[1]。所以*(p+1)或*(a+1)就 与a[1]是等价的。 (2)p+i或a+i就是a[i]元素的存储地址,即它们都指向 数组的第i号元素a[i]。所以*(p+i)或*(a+i)就与a[i]是等 价 的 。 实 际 上 , 在 编 译 时 , 编 译 程 序 把 a[i] 处 理 成 *(a+i)。因此,利用此方法就可访问到数组元素。如:

2.8 指针类型及使用

2.8 指针类型及使用 main()
{ int a[0]; int *p,i; for(i=1;i<10;i++) cin>>a[i]; p=a; for (i=0;i<10;i++) cout<<*(p+i); //等价于 cout<<a[i]; } 对以上讲过的内容再作几点补充说明:

2.8 指针类型及使用
假设已定义了一个数组a[10],且定义了一个指针变量 p,赋初值a.即p=a; ,则: (1)p++是指向数组元素的下一个元素;即:a[1]。 (2)*p++的运算,*p++等同于*(p++),它的作用是先 得到p所指向的元素的值(即*p),然后再使p+1。 如: for(i=0;i<10;i++,p++) cout<<*p++; (3) *(p++) 与 *(++p)的作用是不同的。 *(p++)是先取p的值作*运算,然后再使p加1(即指 向下一个元素); *(++p)是先使p加1(即使p指向下一个元素),然后 再作*运算。

2.8 指针类型及使用
如:若p的初值为a,(即&a[0]),输出*(p++)时,得到a[0] 的值,而输出*(++p),则得到a[1]的值。 ( 4 ) ( * p)++ 表 示 p 所 指 的 元 素 值 加 1 , 对 上 例 来 说 a[0]++。 (5)对于指针的--(自减)运算原理同上。 5 -(6)只有指向数组元素的指针变量才可进行自加或自 减运算。 2.8.4.3 数组名作函数参数 数组名可以用来作为实参和形参。用数组名作实参, 在调用函数时实际上是把数组的首地址传递给形参, 这样,实参数组就与形参数组共占同一段内存,那么 形参数组中元素的值发生变化后,实参数组中各元素 的值也发生变化,但这种变化并不是从形参传回实参 的,而是

2.8 指针类型及使用
由于形参与实参数共享同一段内存而造成的. 利用数组名作为函数的参数时可以用以下四种情况实 现: (1)形参和实参都用数组名 (2)实参用数组名,形参用指针变量 (3)实参和形参都用指针变量 (4)实参用指针变量,形参用数组名 【 例 2-19】 函数func是实现数组排序的过程。主函数 】 将8个整数读入,调用func排序并输出结果。 #include <iostream.h> void func(int *); //func的函数原型 void main()

2.8 指针类型及使用
{ int data[8]; int i; cout<<"\n输入8个数:"; for ( i =0; i<8; i++ ) cin>>data[i]; func(data); cout <<"\n排序输出: "; for ( i =0; i<8; i++ ) cout<<data[i]<<", "; cout <<endl<<endl; }

2.8 指针类型及使用
void func(int *s) { int i, j; int work; for ( i=0; i<8; i++ ) for ( j=i; j<8; j++ ) if (*(s+i)<*(s+j)) { work=*(s+i); *(s+i)=*(s+j); *(s+j)= work; } }

2.8 指针类型及使用
2.8.5 指针与字符串 2.8.5.1 字符串的指针和指向符串的指针变量 在c++程序中,可以用两种方法来实现字符串的保存: (1)用字符数组来实现 (2)用字符串指针实现 如: main() { char *string=”languaye”; cout<<string; } 输出结果:c language 注意:输出时的指针变量的写法是string而不是*string。

2.8 指针类型及使用
2.8.5.2 字符串指针作函数参数 一般来讲,对于字符数组作为函数的参数可以采 用以下4种方法: 实参 形参 (1)数组名 数组名 (2)数组名 字符指针变量 (3)字符指针变量 字符指针变量 (4)字符指针变量 数组名 【例2-20】 将字符串a复制为字符串b。 】

2.8 指针类型及使用 #include<iostream.h>
void copy_string(char *from,char *to) { while(*from!='\0') { *to=*from; *to++; *from++; } } void main() { char a[20]="c language"; char b[20]="very good"; copy_string(a,b); cout<<a<<endl; cout<<b<<endl; }

2.8 指针类型及使用
2.8.6 指针数组和指向指针的指针 指针数组和指向指针的指针. 1. 指针数组 如果一个数组中的元素均为指针类型的数据,则称 这个数组为指针数组。其定义方式为: 数组名[数组长度 数组长度] 类型标识符 * 数组名 数组长度 如:int *p[4] ; 这种指针数组比较适合于处理字符串。如: char *name[3]={“fortranm”,”basic” ,”pascal”}; 2. 指向指针的指针 指向指针的指针. 前面已经介绍过指针数组.

2.8 指针类型及使用
如: char *name[3] 说明该数组中的元素都是指针,数组代表了该指 针数组的起始地址,name是指向指针型数据的指针。 定义指向指针的指针变量的方式为: 类型标识符号 **变量名 变量名 如:char **p; **p相当于*(*p),说明指针变量p是指向一个字 符指针变量(指向字符型数据的指针变量)的。

2.10 结构体、共用体和枚举 结构体、
2.10.1 结构体 数组中的各元素是属于同一类型的,但有时需要将 不同类型的数据组合成一个有机的整体,并且这些数 据是相互联系的,这就引出了结构体。结构体是由多 种类型的数据组成的整体。组成结构体的各个分量称 为结构体的数据成员(简称成员)。 2.10.1.1 定义结构体 定义结构体的一般格式为: struct 结构体名 { 成员列表 }变量名列表; 变量名列表; 变量名列表

2.10 结构体、共用体和枚举 结构体、
结构体定义是以关键字struct开始的,结构体名应是 有效的C++标识符。结构体中的每个成员都必须通过 定义来确定成员名及其类型。例如: struct student { int num; //学号 char name[20]; //姓名 char sex; //性别 int age; //年龄 }student1; 其中,student是定义的结构体名,该结构体有四个成 员变量num、name、sex、age。student1是定义的结构 体变量。

2.10 结构体、共用体和枚举 结构体、
也可以在结构体定义后再定义结构体变量。格式是: struct 结构体名 变量名列表; 如: struct student { int num; //学号 char name[20]; //姓名 char sex; //性别 int age; //年龄 }; struct student student1;

2.10 结构体、共用体和枚举 结构体、
2.10.1.2 结构体变量的初始化 结构体变量的初始化就是在定义结构体变量的同时, 为其成员提供初值,可采用以下两种方法: (1)在定义结构体类型的同时,为结构体变量初始化。 struct 结构体名 { 成员列表 }变量名 初始值列表 ; 变量名={初始值列表 变量名 初始值列表}; 如:struct student {int num; //学号 char name[20]; //姓名 char sex; //性别 int age; //年龄 }student1={9901, "wang",‘f’,23};

2.10 结构体、共用体和枚举 结构体、
(2)利用已有的结构体类型定义结构体变量,并同时 初始化。格式是: 变量名={值 , 结构体名称 变量名 值1,值2,…… ; ,……}; 如:student stu={1,”zhang”,’M’,20,90.0}; 此时,student1变量中的num成员的值为9901,name成 员的值为"wang",sex成员的值为23。 2.10.1.3 结构体变量的引用 定义了结构体变量以后,就可以在程序中使用这些 变量。引用结构体变量时应注意: (1)不能将结构体变量作为一个整体来引用,只能引 用结构体变量中的成员。引用结构体变量中成员的格 式为: 结构体变量名.成员名 结构体变量名 成员名

2.10 结构体、共用体和枚举 结构体、
如:cout<<student1.name; 此处的“.”是成员运算符,它的优先级别最高。 (2)若结构体的成员本身又是一个结构体变量,则 要使用多个成员运算符,一级一级地找到最低一级 的成员进行引用。 (3)对结构体成员变量的使用可像普通那样进行, 如:进行赋值,参加运算等。如: struct student s1,s2; s1.num=9901; s2.num=s1.num+1;

2.10 结构体、共用体和枚举 结构体、
(4)可以将一个已有值的结构体变量的值直 接赋给另外一个相同类型的结构体变量。方法 是: 结构体变量名1=结构体变量名 ; 结构体变量名 结构体变量名2; 结构体变量名 如:student st1={1,”zhang”,’M’,20,90.0}; student st2; st2=st1; (5)可以应用成员的地址。也可以引用结构 体变量的地址。如: &student.num &st1

2.10 结构体、共用体和枚举 结构体、
2.10.1.4 结构数组 结构数组:即数据类型为结构体类型的数组,这样, 数组中的每个元素都属于同一种结构体类型,每一元素 都分别包含了结构体中的每个成员。 1. 结构数组的定义 Struct student {int num; char name[20]; int age; float score; char addr[30];}; student stu[3];

2.10 结构体、共用体和枚举 结构体、
这就定义了一个结构数组stu,它已含三个元素,其中 每个元素都为student类型,且每个数组元素都各自拥 有自己的一套结构成员num、name、age、score和addr。 2.结构体数组的初始化 . 结构体数组在定义时也可以进行初始化。其初始化 方法与一般数组的初始化方法基本相同,只是必须为 每个元素提供各结构成员的值,如: struct student { int num; char name[20]; char sex;

2.10 结构体、共用体和枚举 结构体、
int age; }; student stu[3]={{1, "sum1",‘M’,20}, {2, "zhao2",‘M’,25}, {3, "qian3",‘M’,21}}; 2.10.1.5指向结构体类型的指针 指向结构体类型的指针 1. 指向结构体变量的指针 结构体变量的指针:是指结构体变量所占内存单元 的起始地址。因此,可以定义指针变量指向结构体变 量。此时该指针变量的值就是结构体变量在内存中起 始地址。 【例2-26】指向结构体变量的指针的使用。 】

2.10 结构体、共用体和枚举 结构体、
#include "iostream.h" #include "string.h" void main() { struct student //定义结构体类型student {long int num; char name[20]; char sex; float score;}; student stu1; //定义结构体类型student的变量stu1 student *p; //定义student类型的指针变量p p=&stu1; //将结构体变量stu1的地址赋给指针变量p stu1.num=1; //分别给结构体变量stu1的num、name、sex、 score成员赋值

2.10 结构体、共用体和枚举 结构体、
strcpy(stu1.name, "li lin"); stu1.sex='M'; stu1.score=89; //输出stu1各成员的值 cout<<stu1.num<<"\t"<<stu1.name<<"\t"<<stu1.sex<<"\t" <<stu1.score<<endl; //借助指针变量p输出它所指向的结构体变量各成员的值 cout<<(*p).num<<"\t"<<(*p).name<<"\t"<<(*p).sex<<"\t" <<(*p).score<<endl; cout<<p->num<<"\t" << p->name<<"\t" << p->sex<<"\t" << p->score<<endl; }

2.10 结构体、共用体和枚举 结构体、
程序的运行结果: 1 li lin M 89 1 li lin M 89 1 li lin M 89 可见,三种访问结构体变量各成员的值的结果完全相同。 程序说明: (1)上例中(*p).num也可写为p->num。 (2)结构体取成员的运算可以采用以下三种形式: ① 结构体变量名.成员名 ②(*结构体指针变量名).成员名 ③ 结构体指针变量名->成员名 2.指向结构体数组的指针 .

2.10 结构体、共用体和枚举 结构体、
【例2-27】指向结构体数组的指针的使用。 】 #include <iostream.h> struct student { int num; char name [20]; char sex; int age ; }; Student stu[3]={{1,"li lin",'M',18},{2,"sum",'M',19}, {3, "zhao",'M',20}}; void main()

2.10 结构体、共用体和枚举 结构体、
{student *p; for (p=stu;p<stu+3;p++) cout<<p->num<<"\t"<<p->name<<"\t"<<p>sex<<"\t"<<p->age<<endl; } 程序的输出结果为: 1 li lin M 18 2 sum M 19 3 zhao M 20 把stu赋给指针变量p,就表示p指向了该数组的起始 地址。p++ 表示 p指向数组的下一个元素,利用这种方 法可以访问数组中所有元素的值。

2.10 结构体、共用体和枚举 结构体、
2.10.1.6 用结构体类型作为函数的参数 1.用结构体类型的变量作函数的参数 传值 传值) .用结构体类型的变量作函数的参数(传值 在C++语言中,允许把结构体类型的变量直接作为函 数的参数,但要注意:此时主调函数的调用点上的实 参与被调函数相应位置上的形参必须是相同的结构体 类型,是将实参的值(各成员的值)传递给相应的形 参。 【例2-28】用结构体类型的变量作为函数的参数。 】 #include "iostream.h" struct student { int num; char name [20]; char sex;

2.10 结构体、共用体和枚举 结构体、
int age ;}; void print(student); Student stu[3]={{1,"li lin",'M',18},{2,"sum",'M',19}, {3,"zhao",'M',20}}; void main() { int i; for (i=0;i<3;i++) print(stu[i]); } void print(student s) { cout<<s.num<<"\t"<<s.name<<"\t"<<s.sex<<"\t"<<s.age <<"\t"<<endl;}

2.10 结构体、共用体和枚举 结构体、
程序的执行结果是: 1 li lin M 18 2 sum M 19 3 zhao M 20 可见,当把一个结构体类型的变量作为函数的参数时, 可以将该变量的值(包含结构体类型中各成员的值) 传递给被调函数的形参。 2.用指向结构体的指针作函数的参数(传指针) .用指向结构体的指针作函数的参数(传指针) 用指向结构体变量的指针作参数。这种方式同指针 作为函数的参数的原理一致,传递的是结构体变量地 址(指针)。

2.10 结构体、共用体和枚举 结构体、
【 例 2-29】 用指针的方法实现例2-28程序的功能。 】 #include "iostream.h" struct student { int num; char name [20]; char sex; int age ; }; void print(student *); Student stu[3]={{1,"li lin",'M',18},{2,"sum",'M',19}, {3,"zhao",'M',20}};

2.10 结构体、共用体和枚举 结构体、
void main() { int i; for (i=0;i<3;i++) print(&stu[i]);} void print(student *s) {cout<<s->num<<"\t"<<s->name<<"\t"<<s>sex<<"\t"<< s->age<<"\t"<<endl;} 3.用结构体变量的引用作为函数的参数 . 此时,被调函数的形参必须声明成引用形式,函数 的形参作为实参的一个别名来使用,从而达到对实参 操作的目的。

2.10 结构体、共用体和枚举 结构体、
【例2-30】用结构体变量引用的方法实现例2-28程序的功 】 能。 #include "iostream.h" struct student { int num; char name [20]; char sex; int age ; }; void print(student &); student stu[3]={{1,"li lin",'M',18},{2,"sum",'M',19}, {3,"zhao",'M',20}};

2.10 结构体、共用体和枚举 结构体、
void main() { int i; for (i=0;i<3;i++) print(stu[i]); } void print(student &s) { cout<<s.num<<"\t"<<s.name<<"\t"<<s.sex<<"\t"<<s.age << "\t"<<endl;} 2.10.1.7 返回结构体类型的函数 1.返回结构类型值的函数的定义 . 其定义格式如下:

2.10 结构体、共用体和枚举 结构体、
2.10.2 堆内存的分配和释放 堆内存就是在程序的运行过程中根据需要而动态分 配的一块内存,因此这种内存分配方式是动态分配, 而不是静态分配(如:数组)。 2.10.2.1 申请分配内存的方式 从内存中申请分配内存的方法有以下两种: (1)利用malloc函数 格式是:void * malloc(字节数) 该函数如分配内存成功,则返回其起始地址,否则 返回NULL。当程序中使用malloc函数动态分配内存时, 应该在程序的头部嵌入相应的头文件:#include <stdlib.h>

2.10 结构体、共用体和枚举 结构体、
如:int *p; p=(int *)malloc(sizeof(int)); student *ps; ps=(student *)malloc(sizeof(student)); (2)利用new运算符: 格式1:指针变量名=new 类型标识符; 格式2:指针变量名=new 类型标识符(初始值); 格式3:指针变量名=new 类型标识符[内存单元个数]; 功能:如果分配内存成功,则返回其起始地址,否则返回 0 注意:格式1和格式2都是申请分配某一数据类型所占字 节数的内存空间;但是在内存分配成功后,同时将一初值 存放到该内存单元中;而格式3可同时分配若干个内存单元, 相当于形成一个动态数组。

2.10 结构体、共用体和枚举 结构体、
如:int *p,*q; student *r; p=new int; //申请分配1个int类型的内存空间(2个字 节) p=new int(10); //申请1个int类型的内存空间,同时将 该 内存单元中放置值10 q=new int[100]; //申请分配100个int类型的内存空间 (200B) r=new student; //申请分配1个student类型的内存空间 (sizeof(student)个字节) 两种方法的区别:使用malloc函数分配内存时,其 返回值要经过类型转换后才可赋给一个指针变量,而 利用new分配内存时则不需要类型转换。

2.10 结构体、共用体和枚举 结构体、
2.10.2.2 释放内存的方式 在C++语言中,当不再使用动态分配的内存空间时, 可以将这部分内存释放,以方便其他程序代码使用。 (1)利用free函数。 格式:free(起始内存地址); 使用时应嵌入相应的头文件:#include <stdlib.h> (2)利用delete运算符: 格式1:delete 指针变量名; 格式2:delete [ ] 指针变量名; 说明:格式1可释放某一个内存单元;而格式2可释放 若干个内存单元的空间。如: #include <iostream.h> #include <stdlib.h>

void main() { int *number,*p,*q; number=new int[100]; //申请分配100个int类型所占内存空 间 p=new int; //申请分配一个int类型所占内存空间(2个字 节) q=(int *)malloc(10*sizeof(int)); //申请分配10个int类型所 占内存空间 if (number==NULL || p==NULL || q==NULL) cout<<"内存分配失败"<<endl; else cout<<"内存分配成功"<<endl; //程序的其它部分 delete []number; //释放number所指向的所有内存空间 delete p; //释放p所指向的所有内存空间 free (q); //释放q所指向的所有内存空间 }

2.10 结构体、共用体和枚举 结构体、
2.10.3 共用体类型 1.共用体概念 . 有时需要使几中不同类型的变量放到同一段内存单 元中,如:把一个int型变量,char 型变量,float型变 量放于同一地址开始的内存单元中,这三个变量在内 存中占的字节数不同,但都从同一地址开始存放,也 就是使用覆盖技术,几个变量相互覆盖,这种使几个 不同的变量共一段内存的结构称为共用体类型的结构 也叫联合。 2. 共用体类型的定义 其定义格式为: union 共用体名 {成员表} 变量表;

2.10 结构体、共用体和枚举 结构体、
如: union data {int i; char ch; float f; }a,b,c; 这表示定义了共用体类型data,并同时定义了属于该种 数据类型的变量a,b,c。 由此可见:其定义方式与结构的定义方式类似,但 二者的含义不同,结构体变量所占内存空间的大小, 是各成员所占的内存之和,每个成员分别占有自己的 内存单元,而共用体变量所占的内存空间大小于等于 占用内存空间最大的成员的长度,如上面定义的a,b,c 三个共用体变量分别占4个字节。

2.10 结构体、共用体和枚举 结构体、
3.共用体变量的定义 . (1)方法1:在定义共用体类型的同时定义该种类型 的 变 量 , 如 上 例 中 的 变 量 a、b、c 就 是 在 定 义 union data类型的同时定义的共用体变量。 (2)方法2:可以用已定义过的共用体数据类型,定 义共用体变量。格式是: union 共用体名称 变量名表; 如:union data mydata; 4.共用体变量的引用 . 共用体变量的使用方法基本同结构体变量的使用方 法,并同时注意以下原则: (1)不能直接使用共用体变量,而只能使用共用体变 量的成员,共用体变量取成员的运算符同结构体变量 取成员的运算符,即用“.”。

2.10 结构体、共用体和枚举 结构体、
如:对于上例定义的共用体变量a来说,可用 以下方法引用其中的成员: a.i 引用共用体变量a中的整型变量i a.ch 引用共用体变量a中的整型变量ch a.f 引用共用体变量a中的整型边量f (2)共用体类型的特点:共用体类型可以使 用覆盖技术使几个不同类型的变量(成员)共 同占用和使用一块内存空间,所以,在每一瞬 时只有一个成员起作用,其他的成员不起作用。 (3)共用体变量中当前正在起作用的成员是 最后一次存放的成员,在存入一个新的成员后 原有的成员就失去作用,如:

2.10 结构体、共用体和枚举 结构体、
a.i=1; a.ch=‘a’; a.f=1.5; 在完成以上三个赋值语句后,只有a.f有效。 (4)共用体变量的地址和各成员的地址都是同一地址。 如:a&a &a.i, &a.f同一地址值。 2.10.4 枚举类型 1. 枚举类型及其定义方法 如果一个变量只有几种可能的取值时,就可以把它 定义为枚举类型,所谓枚举就是指将某一变量所有可 能的取值一一列举出来。枚举类型的定义格式是: enum 枚举类型名{枚举元素表}枚举变量名;

2.10 结构体、共用体和枚举 结构体、
如:enum weekday{sun,mon,tue, wed,thu,fri,sat} workday; 这表示定义了枚举类型weekday,并同时定义了属于该种 类型的变量workday,该变量的取值范围为sun~sat。其中 sun~sat称为枚举元素,是weekday枚举类型变量的所有可 能取值。 2.枚举变量的定义 . (1)方法1:在定义枚举类型的同时定义该种类型的变 量,如上例中的变量workday就是在定义enum weekday类 型的同时定义的枚举变量。 (2)方法2:可以用已定义过的枚举数据类型,定义枚 举变量。格式是: enum 枚举名称 变量名表; 如 : 可 以 利 用 已 有 的 枚 举 类 型 weekday 定 义 变 量 enum weekday myworkday;

2.10 结构体、共用体和枚举 结构体、
3.枚举变量的使用方法 . (1)由于枚举类型中列出了该种类型变量的所有可 能取值,所以可以将某一枚举元素赋给该种类型的变 量,如:workday=mon;是可以的。 (2)在c++中,对枚举元素作常量处理,所以枚举元 2 c++ 素不是变量,不能对它们赋值,如:sun=0;mon=1; sun=0 mon=1 不对。 (3)枚举元素作为常量,它们是有值的,C++语言 编译系统按定义时的顺序使它们的值为0,1,2…… 如 : enum weekday{sun,mon,tue,wen,thu,fri,sat}workday;中,枚举 元素sun的值为0,mon元素的值为1,……。 如果有赋值语句workday=thu;则说明变量workday 的值为4。

2.10 结构体、共用体和枚举 结构体、
(4)当需要改变枚举元素的默认值时,可以在定义枚举 类型的同时在枚举元素的后面用“枚举元素=值”的格 式改变,如:enum weekday {sun=7,mon=1, tue,wed,thu,fri,sat}; 2.10.5 类型定义 类型定义typedef的使用 的使用 在C++语言中,除了可以直接用C++提供的标准类型 名 int,char,floot,double,long 去 定 义 类 型 外 , 还 可 以 用 typedef定义新的类型名代替已有的类型名。如: Typedef int INTEGER;// 为 int 类 型 定 义 一 个 新 的 名 称
INTEGER

typedef float REAL; //为float类型定义一个新的名称 REAL INTEGER a,b; //定义变量a,b为int类型,等价于int a,b; REAL c; //定义变量c为float类型,等价于float c;

2.10 结构体、共用体和枚举 结构体、 又如:
typedef struct student {int num; char name[10]; int score; }STUDENT; //为结构体类型struct student定义新 的名称STUDENT STUDENT a,b; // 定义a,b为struct student类型,等 价于struct student a,b; 注意: (1)类型定义名一般用大写。 (2)类型定义只是给已经存在的数据类型增加一个类 型名,而没有创造一个新的数据类型。

类 对象特点
对象名:张三 { 年龄:22 学历:学士 身高:170cm 能读书 会操作计算机 } //ID //属性

//操作(函数)

基本概念
三、基本概念 类----类是一组具有相同数据结构和相同操作的 对象的集合。是对象在编程中的体现。

类的定义包括一组数据属性和在数据上 的一组合法操作。 类定义可以视为一个具有类似特性与共 同行为的对象的模板,可用来产生对象。

基本概念(类)
在一个类中,每个对象都是类的实例 Instance),它们都可使用类中提供的 (Instance) 函数。 对象的状态则包含在它的实例变量,即 实例的属性中。
类与对象的关系:就如同整型数与1,2,3一 样,即对象是类的实例化。 类的实例为对象,通过对象生成语句生成对象。 格式:类名 对象名1[…对象名n]

class <类名> { public: <成员函数或数据成员的说明>
private:

<成员函数或数据成员的说明> };

基本概念(类)
CLASS dog { int ear; int corlor; int heavy; BOOL honest(man); void doorkeeper(master); } dog 阿福; 阿福.color = yellow;

//定义一个狗类 //阿福是个狗类的对象 //阿福是只黄狗



更多相关文章:
C语言指针用法详解
//说明指针所指向的内容的类型为 int 型.所以 P 是一个返回整型数据的指针 p[3]; // 首先从 P 处开始,先与[]结合,说明 P 是一个数组,然后与 int 结合...
指针使用方法
运算 指针变量的赋值运算有以下几种形式: 1.4.1.1 指针变量初始化赋值如下: int a; int *ip=&a; 1.4.1.2 把一个变量的地址赋予指向相同数据类型指针...
C指针详解(经典,非常详细)
指针所指向的元素是整 //型数据.由于二级指针以及更高级的指针极少用 //在复杂的类型中,所以后面更复杂的类型我们就 //不考虑多级指针了,最多只考虑一级指针....
C指针用法总结
(知道的去死! ) 第一组:char *p, **p, ***p; 分别为 char 指针;char*指针,即指向 char*类型数据地址的指针;char**指针,即 指向 char**类型数据的指针...
指针练习题与答案
× 5. 指针可以加上或减去一个 int 型数, 也可以加上一个指针。 √ 6.两个指针在任何情况下相减都是有意义的。 √ 7.数组元素可以用下标表示,也可以用...
指针的理解
那就要用指针了,把变量地址传进函数,然 后把希望通过函数操作后想要的值存进...要搞清一个指针需要搞清指针 的四方面的内容:指针类型,指针所指向的类型,指针...
C语言指针常用形式的分析
C 语言指针常用形式的分析 1 指针的本质众所周知,在 C 语言中,我们使用到的...2 常用指针类型的解析 2.1 基本类型指针 Int a; Int *p; p=&a; 此种...
史上最全C语言指针总结
(一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址) 指针本身所占据的内存区:用函数 sizeof(指针类型)可以测出指针本身所占据的内存区...
第13讲 指针类型
指针类型 1 指针与简单变量 1.1 定义与观察 定义:分配空间 int *p; 观察:p:地址; *p:数值 1.2 间接操作变量 1.3 指针作函数参数 2 指针与一维数组指针:...
指针类型说明
相应类型的数据; 指针变量: 存放相应的类型数据所在的存储单元的地址, 若要访问指针所指向的数据则 要用到动态变量 动态变量:在指针变量后加^ 数据 地 址 指针...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图