---------------------- <a href="http://www.itheima.com"target="blank">iOS开发</a>、期待与您交流!
----------------------
一、指针
1. 指针存储的是地址,定义的格式: 类型名 *指针变量名 例如: int *p
2. 定义赋值
先定义后赋值: int a = 20; int *p; p = &a;
定义的同时赋值:int a = 20; int *p = &a; (修改a的值: *p = 30; // 修改a的值为30)
int *p = 1000;//错误赋值,不知道地址1000存储的是什么类型的值
3. 指针指向数组
int a[4] = {10,23,35,46};
int *p= a; // 指针p指向数组a的第一个元素
二、返回指针的函数
指针是c语言中的一种数据类型,所以一个函数的返回值肯定可以是指针类型的,返回指针的函数的一般形式为:
类型名 *函数名(参数列表)
比如下面这个函数,返回一个指向char类型变量的指针
#include<stdio.h>
char *name();
int main()
{
char *p =name();
printf("name = %s\n",p);
return0;
}
char *name()
{
return"jack";
}
三、 指向函数的指针
函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。我们的指针变量就是用来存储地址的,因此可以用一个指针指向一个函数(函数名就代表了函数的地址)。
定义的一般形式:函数的返回值类型 (*指针变量名)(形式参数1,形式参数2,................)
其中,形式参数的变量名可以省略,甚至整个形式参数列表都可以省略。
例如:
#include <stdio.h>
int sum(int a,int b) {
return a + b;
}
int main()
{
int (*p)(int a,int b) =sum;// 定义一个指针变量p,指向sum函数
// int (*p)() = sum;
// int (*p)(int, int) = sum;
int result = (*p)(2,3); // 利用指针变量p调用函数
// int result = p(2, 3);
printf("%d", result);
return0;
}
----------------------
<a href="http://www.itheima.com"target="blank">iOS开发</a>、期待与您交流!
----------------------