欢迎来到天天文库
浏览记录
ID:51687625
大小:39.45 KB
页数:7页
时间:2020-03-15
《c语言的重要概念.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、c语言的重要概念一、C语言的指针1.指针说明 指针是包含另一变量的地址变量。 (1)int*p p是一个指针,指向一个整形数。 (2)int*p() p是一个函数,该函数返回一个指向整数的指针。 (3)int(*p)() p是一个指针,该指针指向一个函数,这个函数返回一个整数。 (4)int*p[] p是一个数组,该数组的每一个元素是指向整数的指针。 (5)int(*p)[] p是一个指针,该指针指向一个数组,这个数组的每一个元素是一个整数。 (6)int*(*p)() p是一个指针,该指针指向一个函数,这个函数返
2、回一个指向整数的指针。2.指针的初始化(赋地址) (1)通过符号&取变量(包括结构变量、数组第一个元素)的地址赋给指针; (2)把数组名赋给指针; (3)把函数名赋给指向函数的指针; (4)动态分配内存 例:structc{doubler,i;}; structc*p; p=(structc*)malloc(sizeof(structc));3.指针与数组、函数的关系 (1)对于一维数组inta[i]或指针int*a a+i指向a[i] (2)对于字符串chars[i]或指针char*s s+i指向第i个字符s[i]
3、 (3)对于二维数组inta[i][j] *a+j指向a[0][j] *(a+i)指向a[i][0] *(a+i)+j指向a[i][j] 例:对于a[2][3]={1,2,3,4,5,6,};有*(*(a+1)+1)=5; (4)对于字符串数组charp[i][j]或字符型指针数组char*p[i] *p+j指向第0个字符串的第j个字符 *(p+i)指向第i个字符串的第0个字符 *(p+i)+j指向第i个字符串的第j个字符 例:对于*p[]={"ABC","DEF"};有*(*(p+1)+1)='E'; 例:对于char
4、p[][3]={"ABC","DEF"};有*(*(p+1)+1)='E'; (5)对于指针数组int*a[i] a[i]指向变量i 即*a[i]=变量i或a[i]=&变量i (6)对于结构structXY {intx;int*y}*p; p是指向结构XY的指针 (*p).x或p->x是表示x的内容 (*p).y或p->y是表示指针y的值(地址) *(*p).y或*p->y是表示y所指的内容 &(*p).x或&p->x是表示x的地址 (7)指向函数的指针 对于voidfunc(char*str) {…};//定义了
5、一个函数 void(*p)(char*);//定义了一个函数指针 p=func;//让指针指向函数 则(*p)("…");//用指针p可以调用函数func (8)指向多个不同函数的指针数组 对于voidfunction_1(){…}; … voidfunction_4(){…};//定义了四个函数 typedefvoid(*menu_fcn)();//定义了指向函数的指针 menu_fcncommand[4];//定义了指针数组 command[0]=function_1; … command[3]=function
6、_4;//让指针数组指向四个函数 则command[0]();//用指针数组中的一个元素调用一个函数4.指针的分类 (1)近指针(near): 近指针为16位指针,它只含有地址的偏移量部分。近指针用于不超过64K字节的单个数据段或代码段。在微、小和中编译模式下产生的数据指针是近指针(缺省状态);在微、小和中编译模式下产生的码指针(指向函数的指针)是近指针(缺省状态)。 (2)远指针(far) 远指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。每次使用远指针时都要重装段寄存器。远指针可寻址的目标不能超过64K,
7、因为远指针增减运算时,段地址不参与运算。在紧凑、大和巨模式下编译产生的数据指针是远指针(缺省状态)。 (3)巨指针(huge) 巨指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。远指针寻址的目标可以超过64K。巨指针是规则化的指针。5.指针的转换 (1)远指针转换成巨指针 使用以下函数 voidnormalize(voidfar**p) { *p=(voidfar*)(((long)*p&0xffff000f)+(((long)*p&0x0000fff00<<12)); }6.指针的使用 (1)将浮点
8、数转换成二进制数 floatff=16.5; unsignedchar*cc; (float*)cc=&ff; //此时cc的内容为"00008441" //即cc第一
此文档下载收益归作者所有