什么是指针
指针 = 地址
指针变量
1.存放指针的变量
2.存放地址的变量
*(&hello); // 此时 " * "代表的是一个运算符,跟+ - / * 运算符类似,
//该运算符的功能是取出内存地址中的数据的值(取内容)。
**int a =10 ; &a(0x660cffc0)**
” * “ 只有在定义一个指针变量的时候,才是指针的一个标识符 ,在其他情况下,都是一个取内容的运算符
为什么用指针
- 指哪打哪——指定内存位置,给它赋值
- 经典数据交换——参数传递要用地址
c语言的指针可以做到把a(10)数据 强制保持在我要的地址 0060ff00 (在ARM架构 裸机编程 ARM 驱动)
volatile int *p = (volatile int *)0x0060ff00; //强制保持在我要的地址0060ff00
指针重点
1.变量访问的两种方式:
a.变量名 b.指针
2.指针
a.指向谁(类型)p=&a
b.偏移后指向谁 p++
3.整型指针只能指向整型数据,只能存放整型地址
指针变量必须初始化一个有效值才能使用
数组指针
指向数组的指针
指针数组
int *parray[3];
//多个指针,叫做指针数组
//数组中的每一项都是一个指针变量 指针变量是存放地址的变量
函数指针 ----> 指向函数的指针
void(*p)();
数据类型 (*函数指针名)();
void printWelcome()
{
printf("欢迎来到函数指针学习课堂\n");
}
int main(){
void (*p)();
p = printWelcome; //函数就是地址 ,就像数组一样,数组名就是地址
p(); //直接通过 名字( );
(*p)( );