- 5
- 0
- 约1.09万字
- 约 43页
- 2020-02-07 发布于辽宁
- 举报
六、返回指针值的函数 一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址。这种返回指针值的函数,一般定义形式为: 类型说明符 *函数名(参数表) { … //函数体 } 例如:int *p(int x,int y) //函数值是指针 { … //函数体 } 注意:*p两侧没有括号。函数p有两个形参,函数值是指针,即函数p是指针 型函数。最前面的int表示返回的指针指向int型数据。 【例9-13】求两数中大数。(用返回指针值的函数) int *max(int *x,int *y) //返回值是指针 { if(*x*y) return x; else return y; } #include stdio.h void main( ) { int a,b,*p; scanf(%d,%d,a,b); p=max(a,b); //返回值是指针 printf(两数中大数是:%d\n,*p); } 例如:int i,j; i=3; j=6; 编译系统根据变量的类型,分配一定长度的空间。(VC编译系统为int 分配4个字节,float分配4个字节,char分配1个字节) 在图9-1中,整型变量i占地址为2000、2001、2002、2003的四个字节的存储单元,该存储单元中存放的是整数3;整型变量j占地址为2004、2005、2006、2007的四个字节的存储单元,该存储单元中存放的是整数6。 一个变量占多个存储单元时,以首地址表示该变量的地址。变量i的地址是2000,变量j的地址2004。这里变量i、j的地址分别是2000、2004仅是一种假设。对用户来讲,不用关心变量具体的址址,只用“”取地址运算符取变量的地址就可以了。也就是说,变量i的地址是i,变量j的地址是j。 请注意区分:变量名、变量的地址、变量的值。 程序中,是通过变量名来对内存单元进行存取操作的(按 名存取)。实际上,程序经编译后,己将变量名转换为变量的 地址,对变量值的存取都是通过地址进行的(按地址存取)。 例如:printf(“%d”,i); 该函数调用语句的执行是这样的:根据变量名与地址的对 应关系(这个对应关系是在编译时确定的),找到变量i的地址 2000,然后从由2000开始的四个字节中取出整型数据(即变 量的值3),把它输出。 例如:scanf(%d,i); 该函数调用语句的执行是这样的:把从键盘输入的值送到 地址为2000开始的整型存储单元中。 这种按变量地址存取变量值的方式称为“直接访问”方式。 还可以采用另一种称之为“间接访问”的方式:将变量i的地 址存放在另一个变量中。 按C语言的规定,可以在程序中定义整型变量、实型变量、 字符变量等,也可以定义这样一种特殊的变量,它是专门用来 存放地址的。这种专门存放地址的变量,就称“指针变量”。 例如:假设定义了一个变量pointer,用来存放整型变量 的地址,它被分配为3000、3001、3002、3003的四个字节的 存储单元。可以通过下面语句将i的地址(2000)存放到 pointer中。 pointer=i; 这时,pointer的值就是2000,即变量i所占用单元的首地 址。见图9-1所示。 为了表示将数值3送到变量中,可以有两种表达方法: (1)将3送到变量i所标志的单元中。(直接访问) 例如:i=3; (2)将3送到变量pointer所“指向”的单元中。(间接访问) 例如:pointer=i; *pointer=3; “*”就是间接寻址运算符,意思是将3送到pointer所指向的变量中。 在这里,i和*
您可能关注的文档
最近下载
- 某植物保健饮料项目商业计划书.docx VIP
- English in Mind 2级别精品教学课件U3.pptx VIP
- BRCGS食品安全球标准第9版标准讲解及内审员培训教材.pptx
- 劳尔RAL色卡与潘通PANTONE色卡对照表.pdf VIP
- 聚氯乙烯生产环评报告书.pdf VIP
- QC-T 592-2013 液压制动钳总成性能要求及台架试验方法.pdf VIP
- 房屋拆除工程监理规划.docx VIP
- 2024年冲刺-副主任医师(副高)-急诊医学(副高)考试历年(2015-2023)真题荟萃带答案.docx VIP
- 公司物业服务投标方案(技术方案).docx VIP
- 世界工程组织联合会:2024生成式人工智能安全与全球治理报告.pdf VIP
原创力文档

文档评论(0)