今天就让我带大家走进传说中的指针吧。。。
1.首先了解数据访问方式,数据访问分为直接访问和间接访问。直接访问就是直接访问内存单元里的数据。
例如int a = 3,a恒等于内存单元,这就是直接访问的一种方式,间接访问通过寻找内存单元地址,来访问内存单元里存放的数据,间接访问在指针中随处可见,指针就是间接访问的常用方式。
2.指针变量
所谓指针变量就是存放内存地址的变量。
指针类型转换符%p,如何打印指针变量代码:printf("%p", p );输出结果为一个16进制的数
3.取地址运算符与取值运算符,这是一对相反的操作符
看如下一行代码。
4.指针的算术运算符
int a = 3;
int *p = &a;
p++;//向高位移动4个字节
p--;//向低位移动4和字节 指针类型决定指针移动几个字节,而且指针类型决定根据
地址取内容的长度
5.
int a = 3;
int *p = &a;
printf("%d", a);
//输出的值为2
printf("%d", *p);
//printf输出的2
第一行开始定义指针变量时int *p,其实指针变量是p而不是*p这里的*号只起修饰作用而且可以把
(int *)看作一种数据类型整形指针,而且有的定义指针是代码写成这样,
比如: int* p,这样看起来就比较明了 int*是一种数据类型 。
6.数组的内存地址
用连续内存空间存储数据的构造类型。
7.指针与数组
数组名可以用指针变量代替
8.指针与数组的区别
内存空间不同
指针:至于操作系统位数有关。
数组:与元素个数和类型有关
数组名是常量地址不能重指向
而指针可以重指向
指针sh是不能算出数组元素的元素个数。