黑马程序员--C语言-指针函数及应用
2015-07-30 15:50
423 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
在C语言中,允许一个函数的返回值是一个指针(即地址),这种返回值的函数称为指针型函数。
其形式为: 类型说明符 * 函数名(形参表);
其中函数名之前加了“*”号,表明这是一个指针型函数,即返回值是一个指针,类型说明符表示了返回的指针所指向的数据类型。
例如:返回a ,b 两个数中大数的地址
对上面的函数进行分析,假设我们将函数写为:
则,返回的只是形参的地址,而非实参的地址,函数调用的时候,形参变量分配新的空间,实参和形参之间只是值传递,而非地址传递。
如果我们写为:
则调用函数的时候,形参变量分配了新空间,但是空间地址为实参传递给形参的地址,所以返回的地址也是实参的地址。
应用:通过指针函数,输入一个1-7之间的整数,输出对应的星期名。
在C语言中,允许一个函数的返回值是一个指针(即地址),这种返回值的函数称为指针型函数。
其形式为: 类型说明符 * 函数名(形参表);
其中函数名之前加了“*”号,表明这是一个指针型函数,即返回值是一个指针,类型说明符表示了返回的指针所指向的数据类型。
例如:返回a ,b 两个数中大数的地址
#include <stdio.h> int * max(int *x,int *y){ return *x>*y?x:y; } int main(){ int a=3,b=4; int *p=max(&a,&b); printf("%p\n",p); return 0; }
对上面的函数进行分析,假设我们将函数写为:
int * max(int x,int y){ return x>y?&x:&y; }
则,返回的只是形参的地址,而非实参的地址,函数调用的时候,形参变量分配新的空间,实参和形参之间只是值传递,而非地址传递。
如果我们写为:
int * max(int *x,int *y){ return *x>*y?x:y; }
则调用函数的时候,形参变量分配了新空间,但是空间地址为实参传递给形参的地址,所以返回的地址也是实参的地址。
应用:通过指针函数,输入一个1-7之间的整数,输出对应的星期名。
#include <stdio.h> char * getDay(int n){ //定义一个字符串指针数组 char * day[]={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; return n<8&&n>0?day[n-1]:"输入错误!"; } int main(){ printf("%s\n",getDay(4)); return 0; }
相关文章推荐
- c++中容器之总结篇
- c++之string类编写
- C/C++中volatile关键字详解
- C++学习笔记(三)
- C++学习笔记(二)
- 【effective c++读书笔记】【第2章】构造/析构/赋值运算(1)
- 【effective c++读书笔记】【第2章】构造/析构/赋值运算(1)
- C语言中控制台应用程序中空格的输出。编译环境:vs2010
- c语言实现几种排序算法OC实现
- 【C语言探索之旅】 第二部分第十课:练习题和习作
- 【语言-c++】map的使用
- C++学习笔记(一)
- 读书笔记MoreEffectiveC++(31)
- C语言程序的构成
- 关于C语言中的运算符
- C++OJ提交题目中的语言选项里G++与C++的区别
- c++ 工具库 (zz)
- 约瑟夫环(C++单项循环链表)
- 计数问题(/C++)
- 【C语言探索之旅】 第二部分第十课:练习题和习作