c语言的重要概念.doc

c语言的重要概念.doc

ID:51687625

大小:39.45 KB

页数:7页

时间:2020-03-15

c语言的重要概念.doc_第1页
c语言的重要概念.doc_第2页
c语言的重要概念.doc_第3页
c语言的重要概念.doc_第4页
c语言的重要概念.doc_第5页
资源描述:

《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第一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。