一.什么是指针
- 指针:存储的是对象的地址,地址的起始位置就是对象结构体的开始
- 也就是说:对象的第一个元素的地址可以作为指针的指向内容。
char arr[] = "hello world";//字符串数组,临时变量,放在栈区
char *arr1 = "hello world";//字符串常量,常量区,不能被修改
二.函数指针与指针函数
- 总结
函数指针, 本质上它是一个指针,这个指针指向一个函数地址
指针函数,本质上它是一个函数,返回值是一个指针
int sum(int a, int b)
{
return a+b;
}
int main(int argc, const char * argv[]) {
//定义一个函数指针, 指针指向函数 sum
int (*p)(int, int) = sum;
//调用函数指针,其实就是调用 指针指向的函数 sum
int ret = (*p)(1, 2);
//int ret = p(1, 2) 也可以的
printf("%d\n", ret);
}
-
int *p(int, int);
解释: p不带括号,p和后面的参数相连,所以p(int, int)
是一个整体,可以这样拆解
int* (p(int, int) ) -> int * (函数)
所以这是一个返回int *
类型,参数为int int
的,名字为p
的函数,即指针函数 -
int (*p)(int, int);
解释:*p带括号,将p和后面的参数隔离开,代表p是一个指针并且指向函数,所以p是函数指针。
网友评论