1、指针==地址 (指针变量,存放地址的变量)
访问变量的两种方式(1、变量名访问;2、通过地址间接访问 &是取地址运算符 *是将地址中的值读出运算符)
2、两个变量的交换
3、指针指向固定区域 (单片机开发,armbootload代码编写)
练习
输入三个数,不管怎么输入,输出的时候都是大到小的顺序输出,用函数封装实现
4、定义指针变量指向数组
指向数组首元素地址
数组名既是首地址
指针增量和数组的关系
指针和数组名的见怪不怪(面试)
A.指针当作数组名,下标法访问
B.数组名拿来加
数组名和指针的区别(指针可以*p++,数组名不可以*arr++,因为p是指针变量,而数组名对应的是一个指针常量)
使用sizeof
练习
- 函数封装数组初始化,遍历
- 将数组中的n个元素按逆序存放
5、二维数组(地址)
6、数组指针(int *p)[4]
练习:输出二维数组任意行列的数
7、函数指针 (函数名就是地址)
定义:
定义函数指针变量:int(*p)(int a,int b)
练习:有两个整数a和b,用户输入1,程序给出最大值,
输入2给出最小值,输入3,求两者和
8、指针数组 int* p[4] 数组中的元素都是指针
练习: 有两个整数a和b,输出最大值,最小值,两数和
9、指针函数 函数返回值是一个指针
定义:
练习:a个学生,每个学生有b门课,要求用户输入学生学生序号,
能输出该学生的全部成绩
练习:a个学生,每个学生有b门课,找出其有不及格的课程的学生及其学号
10、二级指针
11、二级指针和二维数组关联
12、定义各种变量
a、一个整型 int a;
b、一个指向整数的指针 int *p;
c、一个指向指针的指针,它指向的指针指向一个整形数 int **p;
d、一个有10个整数的数组 int a[10];
e、一个有10个指针的数组,每个指针指向一个整形数 int *p[10]
f、一个指向有10个整形数的数组指针 int (*p)[10]
g、一个指向指针的指针,被指向的指针指向一个有10个整形数的数组 int (**p)[10]
h、一个指向数组的指针,该数组有10个整形指针 int* (*p)[10]
i、一个指向函数的指针,该函数有一个整形参数并返回一个整形数
int (*pFun)(int )
j、一个有10个指针的数组,每个指针指向一个函数,该函数有一个整形参数并返回一个整形数 int (*p[10])(int )
k、一个函数的指针,指向的函数的类型是有两个整形参数并且返回一个函数指针的函数,返回的函数指针指向有一个整形参数且返回整形数的函数 int (*(*pFun)(int ,int ))(int )