iOS基础知识:指针函数和函数指针
来源:互联网 发布:淘宝网店上架宝贝 编辑:程序博客网 时间:2024/06/05 22:56
指针函数:
其实就是指针的函数,本质上还是一个函数
当函数的返回值,是一个指针的时候,就叫指针函数。
定义语法:
类型 * 函数名(参数列表){
函数体;
}
注意:这个*可以放在类型和函数名中间的任意位置
内存中有一个地方叫栈区,栈区里面放的是局部变量
有一个特点:出了作用域,就会回收
注意:C语言中的数据类型只要是局部的都是存在栈里面的
用处的话:只能返回全局变量或者返回字符串常量,还可以返回静态变量的地址
#include <stdio.h>
int qNum = 40;
int *test(){ //函数名是test 返回值是int *
// int num = 10;
// int *p = #
// return #
return &qNum;
}
char *test2(){
char *str = "abc";
return str;
}
int main(int argc, const char * argv[]) {
/*
int *p = test();用int*类型的指针来接受同样类型的返回值
int nums[100] = {0};
printf("%d\n",*p);
*/
char *strn = test2();//用char*类型的指针来接受同样类型的返回值
printf("%s\n",strn);
return 0;
}
函数指针:
函数的指针,本质上一个指针,指向函数的指针,就是一个函数指针。
我们写的源代码编译成二进制的指令集,一串交给CPU执行的指令
先存在内存里面,然后CPU读取内存里的指令,既然存到内存里面,一定有一个地址
所以,我们可以定义一个指针变量保存函数的地址,那么这样的指针变量就是函数指针
对比:普通指针和函数指针
int num = 10;
int *p = #
函数指针定义语法:
返回值类型 (*指针变量)(参数列表);
例: void (*pTest)(); //变量名:pTest 这个指针指向的是无返回值无参数的函数类型
void (*pTest2)(int);//变量名:pTest2 这个指向的是无返回值有1个int类型参数的函数
tips:直接复制函数头,把大括号去掉,把函数名用一个小括号括起来,函数名前面加一个*,函数名重新改成变量名
指针变量赋值:
语法:
指针变量名 = 函数名;
例: pTest = test;
因为函数名本身就是一个指向自己函数的地址
吐血要求:函数名后面千万不要加()
在声明的时候初始化
返回值类型 (*指针变量名)(参数列表) = 函数名;
例:void (*pTest)() = test;
函数指针的使用:
1.指针变量名(参数列表);(推荐)
pTest();
pTest2(90);
2.(*指针变量名)(参数列表);
例: (*pTest)();
(*pTest2)(90);
#include <stdio.h>
void test(){
printf("test\n");
}
void test2(int num1){
printf("num1=%d\n",num1);
}
void test3(int num1,int num2){
printf("num1=%d num2=%d\n",num1,num2);
}
int test4(int num1,int num2){
return num1 + num2;
}
int main(int argc, const char * argv[]) {
// void (*pTest)(); //变量名:pTest 这个指针指向的是无返回值无参数的函数类型
// pTest = test;
void (*pTest)() = test;
(*pTest)();
void (*pTest2)(int);//变量名:pTest2 这个指向的是无返回值有1个int类型参数的函数
pTest2 = test2;
pTest2(90);
void (*pTest3)(int,int) = test3;
pTest3(20,30);
int (*ptt)(int num1,int num2) = test4;
// int res = ptt(10,40);
// printf("res=%d\n",res);
printf("%d\n",ptt(10,40));
return 0;
}
- iOS基础知识:指针函数和函数指针
- C/C++基础知识:函数指针和指针函数的基本概念
- C/C++基础知识:函数指针和指针函数的基本概念
- C/C++基础知识:函数指针和指针函数的基本概念
- C/C++基础知识:函数指针和指针函数的基本概念
- C/C++基础知识:函数指针和指针函数的基本概念
- C/C++基础知识:函数指针和指针函数的基本概念
- C/C++基础知识:函数指针和指针函数的基本概念
- 学ios需要了解的C语言基础知识-7-指针和指针与字符串函数
- 指针函数和函数指针
- 函数指针和指针函数
- 指针函数和函数指针
- 指针函数和函数指针
- 函数指针和指针函数
- 函数指针和指针函数
- 函数指针和指针函数
- 指针函数和函数指针
- 函数指针和指针函数
- final修饰符---final变量
- 创建基于Gradle的Web项目
- Localtunnel内网穿透工具的安装与使用
- 笑看昨天 珍爱今天 期待明天
- 三元组顺序表-转置运算-三种算法
- iOS基础知识:指针函数和函数指针
- MVC设计模式
- 算法学习之字符串匹配 KMP 算法(一)(原理介绍)
- 消费者生产模式
- css盒子模型part3
- 《C++ primer》英文第五版阅读笔记(十三)——表达式基本知识
- html中常用单位
- 对于自学验证码识别的感想
- 南昌大学软院大神养成计划----第三天编写简易网页