14返回指针的函数与指向函数的指针
2015-01-22 14:43
218 查看
一、返回指针的函数
指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的。返回指针的函数的一般形式为:类型名 * 函数名(参数列表)
比如下面这个函数,返回一个指向char类型变量的指针
int main()
{
// 定义一个字符串变量
char str[] = "lmj";
// 调用函数
char *dest = upper(str);
printf("%s", dest);
return 0;
}
// 将字符串str中的小写字母变成大写字母,并返回改变后的字符串
// 注意的是:这里的参数要传字符串变量,不能传字符串常量
char * upper(char *str) {
// 先保留最初的地址。因为等会str指向的位置会变来变去的。
char *dest = str;
// 如果还不是空字符
while (*str != '\0') {
// 如果是小写字母
if (*str >= 'a' && *str <= 'z') {
// 变为大写字母。小写和大写字母的ASCII值有个固定的差值
*str -= 'a' - 'A';
}
// 遍历下一个字符
str++;
}
// 返回字符串
return dest;
}
=====================================================
// main.c
// 返回指针的函数
//
// Created by mj on 13-3-26.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#include <stdio.h>
char * test() {
return "itcast";
}
int main(int argc, const char * argv[])
{
printf("%s", test());
return 0;
}
==============================================================
1.为什么指针可以指向一个函数?
函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。
2.指向函数的指针的定义
定义的一般形式:函数的返回值类型 (*指针变量名)(形式参数1, 形式参数2, ...);注意:形式参数的变量名可以省略,甚至整个形式参数列表都可以省略
//
// main.c
// 指向函数的指针
//
// Created by mj on 13-3-26.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#include <stdio.h>
int sum(int a, int b) {
int c = a + b;
printf("%d + %d = %d\n", a, b, c);
return c;
}
int minus(int a, int b) {
return a - b;
}
int mul(int a, int b) {
return a * b;
}
// count函数是用来做a跟b之间的运算
// 至于做什么运算,取决于p
int count(int a, int b, int (*p)(int, int))
{
return p(a, b);
}
int main(int argc, const char * argv[])
{
int result = count(5, 6, mul);
printf("result:%d", result);
// // 定义了一个指向函数的指针变量p
// // 被p指向的函数:返回值为int类型,接收两个int类型的参数
// int (*p)(int, int);
int (*p)(int a, intb),第1个int代表sum函数的返回值是int类型,然后*p是用括号()包住的,后面的int a和int b代表着sum函数的形参
// // 让指针变量p指向sum函数
// p = sum;
//
// // 利用指针变量p间接调用sum函数
// // (*p)(5, 6);
// p(5, 6);
return 0;
}
相关文章推荐
- 【C语言】14-返回指针的函数与指向函数的指针
- 【C语言】14-返回指针的函数与指向函数的指针
- 【C语言】14-返回指针的函数与指向函数的指针
- 【C语言】14-返回指针的函数与指向函数的指针
- 【C语言】14-返回指针的函数与指向函数的指针
- 【C语言】14-返回指针的函数与指向函数的指针
- 学习笔记之14-返回指针的函数与指向函数的指针
- 【C语言】14-返回指针的函数与指向函数的指针
- 指向函数的指针和返回指针的函数
- 返回指向函数的指针的函数 的一个例子
- C语言中返回指针的函数和指向函数的指针
- 指向函数的指针 和 返回指针的函数
- C++中返回指向函数的指针学习
- C++中函数怎么返回一个二维数组。指针怎么指向二维数组?
- 函数返回指向自己的指针
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- 返回指针的函数 与 指向函数的指针
- 函数指针、函数返回指针、const指针、指向const指针,指向const的const指针。
- 十四、返回指针的函数与指向函数的指针
- 返回指向函数的指针