目录:
一:1级指针
1.1:内存的使用
1.2:c语言内存中数据的访问
1.3:一级指针的定义方式
1.4:通过指针访问数据。
二:二级指针
2.1二级指针的创建和访问
总结
一:1级指针
首先在对指针进行理解之前,我们要清楚下面这几个个概念:
1.1:内存的使用
和现实生活对空间的分别方式相似,给不同的地域不同的名称。例如,北京,上海等
而内存也是一块空间,所以对这块空间的不同位置进行不同的编号,用起来也会更加方便。
这些编号就是我们常说的地址了。
我们都知道 ,内存里最小的内存单元就是一个bit位 ,那多大的内存空间可以分配一块地址呢,在
c语言的标准中规定,给每个字节大小的空间(8个比特位)配置一个专门的地址。
1.2:c语言内存中数据的访问
在c语言中创建一个变量a,那么我们通常是用变量名来访问这个数据,但是也可以用地址来访问这个数据 。那么要怎么通过地址来访问数据呢?????
这里就需要指针了。
1.3:一级指针的定义方式
#include<stdio.h>
int main()
{
//一级指针
int a = 10;
int* pa = &a;
printf("%d\n", a);
printf("%d\n", *pa);
return 0;
}
int a = 10;//定义一个整形变量,变量中存储的数据是10
int* pa = &a;//* 代表pa是一个指针 最前面的int代表pa指向的变量类型是整形类型
1.4:通过指针访问数据。
*pa=1;//代表对pa中的数据(也就是刚才拿到的a的地址)进行解引用,来访问a中的数据。
总结:指针里只能存放地址,地址也只能放置在指针中,对一级指针进行解引用就能通过他里面的地址来访问原变量a中存储的数据
二:二级指针
通过前面的了解我们知道,指针变量里面放置的是地址,而只要是变量,那肯定就有它自己的地址 所以我们来看下面这个例子
2.1二级指针的创建和访问
**ppa也可以看成 *(*ppa) 首先*ppa表示对ppa中的数据进行解引用,就能访问pa中存储的数据 所以*ppa就想当于pa,而对pa进行解引用就能访问a了(在上面的例子我们可以看到这两钟形式打印出的数据一样)
所以 * *ppa 也就相当于 a 了
总结:
一级指针pa里存的是整形变量a的地址,二级指针ppa里存的是一级指针变量pa的地址。
以此类推n级指针的定义和访问方式相同。