c语言的重要概念

上传人:wuxin****2020 文档编号:132561311 上传时间:2022-08-08 格式:DOC 页数:7 大小:16.51KB
收藏 版权申诉 举报 下载
c语言的重要概念_第1页
第1页 / 共7页
c语言的重要概念_第2页
第2页 / 共7页
c语言的重要概念_第3页
第3页 / 共7页
资源描述:

《c语言的重要概念》由会员分享,可在线阅读,更多相关《c语言的重要概念(7页珍藏版)》请在装配图网上搜索。

1、c语言的重要概念 一、C语言的指针1.指针说明指针是包含另一变量的地址变量。(1)int *pp是一个指针,指向一个整形数。(2)int *p()p是一个函数,该函数返回一个指向整数的指针。(3)int (*p)()p是一个指针,该指针指向一个函数,这个函数返回一个整数。(4)int *pp是一个数组,该数组的每一个元素是指向整数的指针。(5)int (*p)p是一个指针,该指针指向一个数组,这个数组的每一个元素是一个整数。(6)int *(*p)()p是一个指针,该指针指向一个函数,这个函数返回一个指向整数的指针。2.指针的初始化(赋地址)(1)通过符号&取变量(包括结构变量、数组第一个元素

2、)的地址赋给指针;(2)把数组名赋给指针;(3)把函数名赋给指向函数的指针;(4)动态分配内存例:struct cdouble r,i;struct c *p;p=(struct c *)malloc(sizeof(struct c);3.指针与数组、函数的关系(1)对于一维数组 int ai 或指针 int *aa+i 指向 ai(2)对于字符串 char si 或指针 char *ss+i 指向第 i个字符 si(3)对于二维数组int aij *a+j 指向 a0j*(a+i) 指向 ai0*(a+i)+j 指向 aij例:对于 a23=1,2,3,4,5,6,; 有 *(*(a+1)+

3、1)=5;(4)对于字符串数组char pij 或字符型指针数组char *pi*p+j 指向第 0个字符串的第 j个字符*(p+i) 指向第 i个字符串的第 0个字符*(p+i)+j 指向第 i个字符串的第 j个字符例:对于 *p=ABC,DEF; 有 *(*(p+1)+1)=E;例:对于 char p3=ABC,DEF; 有 *(*(p+1)+1)=E;(5)对于指针数组int *aiai 指向 变量i即 *ai=变量i 或 ai=&变量i(6)对于结构struct XYint x;int *y*p;p是指向结构XY的指针(*p).x 或 p-x 是表示 x 的内容(*p).y 或 p-y

4、 是表示指针 y 的值(地址)*(*p).y 或 *p-y 是表示 y 所指的内容&(*p).x 或 &p-x 是表示 x 的地址(7)指向函数的指针对于 void func(char *str) ; /定义了一个函数void (*p)(char*);/定义了一个函数指针p=func; /让指针指向函数则(*p)(); /用指针p可以调用函数func(8)指向多个不同函数的指针数组对于void function_1() ;void function_4() ; /定义了四个函数typedef void(*menu_fcn)();/定义了指向函数的指针menu_fcn command4; /定义

5、了指针数组command0=function_1; command3=function_4; /让指针数组指向四个函数则command0(); /用指针数组中的一个元素调用一个函数4.指针的分类(1)近指针(near):近指针为16位指针,它只含有地址的偏移量部分。近指针用于不超过64K 字节的单个数据段或代码段。在微、小和中编译模式下产生的数据指针是近指针(缺省状态);在微、小和中编译模式下产生的码指针(指向函数的指针)是近指针(缺省状态)。(2)远指针(far) 远指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。每次使用远指针时都要重装段寄存器。远指针可寻址的目标不能

6、超过64K ,因为远指针增减运算时,段地址不参与运算。在紧凑、大和巨模式下编译产生的数据指针是远指针(缺省状态)。(3)巨指针(huge)巨指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。远指针寻址的目标可以超过64K 。巨指针是规则化的指针。5.指针的转换(1)远指针转换成巨指针使用以下函数void normalize(void far * * p)*p=(void far *)(long)*p&0xffff000f)+(long)*p&0x0000fff0012);6.指针的使用(1)将浮点数转换成二进制数float ff=16.5;unsigned char *cc

7、;(float*)cc=&ff;/此时cc的内容为00008441/即cc第一个字节=0;第二个字节=0;第三个字节=0x84;第四个字节=0x41;(2)将二进制数转换成浮点数float ff;unsigned char *cc;cc=(unsigned char*)malloc(4);cc=(unsigned char*)&ff;*(cc+0)=0;*(cc+1)=0;*(cc+2)=0x84;*(cc+3)=0x41;/此时ff=16.5free(cc);二、C 语言的函数1.用户自定义函数格式类型 函数名(形式参数表)参数说明2.函数的调用方式(1)传值方式传给被调用函数的是整型、长整

8、型、浮点型或双精度型变量。被调用的函数得定义相应的变量为形参。传给被调用函数的是结构变量。被调用函数得定义结构变量为形参。传给被调用函数的是结构变量的成员。被调用函数得定义与该成员同类的变量为形参。(2)传址方式传给被调用函数的是变量的地址。被调用函数得定义指针变量为形参。传给被调用函数的是数组的地址即数组名。被调用的函数得定义数组或指针变量为形参。传给被调用函数的是函数的地址即函数名称。被调用函数得定义指向函数的指针变量为形参。传给被调用函数的是结构的地址。被调用函数得定义结构指针为形参。3.函数调用(传值方式)结果的返回(1)返回的是数值要求被调用的函数类型与接收返回值的变量类型相同。(2)返回的是指针要求被调用的函数是指针函数,其指向的类型与接收的指针变量指向类型相同。(3)不返回任何值被调用的函数是void型。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!