C语言基础-指针深入16
来源:互联网 发布:产品经理 原型软件 编辑:程序博客网 时间:2024/06/03 20:52
1.指针为什么要分类型
无论指针是什么类型,在内存中都是占据8个字节.既然指针都是占据8个字节.为什么指针还要分类型呢?
通过指针间接的操作指针指向的变量的方式.
int num = 10;
int* p1 = #
p1指针变量中存储的是num变量的地址也就是num变量的低字节的地址.
通过这个p1指针其实只能找到这个地址的字节.
这个时候,通过p1指针找到这个字节操作的时候,是操作多个字节空间呢?
操作多少个字节是根据指针的类型来决定的.
指针变量的类型决定了通过这个指针找到字节以后连续操作多少个字节空间.
指针是int* 那么就连续操作4
指针是double*那么就连续操作8
指针是float* 那么就连续操作4
指针是char* 那么就连续操作1
所以,指针的类型如果不和指向的变量的类型相同话.那么通过指针就无法正确的操 作指向的变量.
所以,指针变量一定要指向1个和自己类型相同的普通变量才可以.
2.多级指针
一级指针.
1个指针变量中存储的是1个普通变量的地址,像这样的指针,我们就叫做一级指针.
二级指针.
1个指针变量中存储的是1个一级指针变量的地址,像这样的指针,我们就叫做二级指针.
三级指针.
1个指针变量中存储的是1个二级指针变量的地址,像这样的指针,我们就叫做三级指针.
多级指针定义.
1).只能存储一级指针变量的地址.这样的指针叫做二级指针.;
2).声明二级指针的语法:
a. 声明一级指针:数据类型*指针名;
b. 声明二级指针:数据类型**指针名;
c. 声明三级指针:数据类型***指针名;
4).一级指针只能存储普通变量的地址.
二级指针只能存储一级指针变量的地址
三级指针只能存储二级指针变量的地址.
n级指针只能存储n-1级指针变量的地址.
否则就会出问题.
5). 初始化.
使用取地址运算符.拿到对应的指针变量的地址赋值给指针变量就可以了.
int num = 10;
int* p1 = # //p1是1个一级指针.存储的是num变量的地址.
int** p2 = &p1; //p2是1个二级指针,存储的是一级指针变量p1的地址.
int*** p3 = &p2;//p3是1个三级指针,存储的是二级指针变量p2的地址.
多级指针使用:
使用指针的时候.有几颗星就拐几个弯.
*指针变量名.代表这个指针指向的变量.
**指针变量名.这个指针至少要是1个二级指针.代表这个指针指向的指针指向的变量.
*p1 代表p1指针指向的变量.
**p1 代表p1指针指向的指针指向的变量.
***p1 代表p1指针指向的指针指向指针指向的变量.
1. n级指针只能存储n-1级指针变量的地址.
2. 使用指针间接访问指向的变量的时候.
有几颗星就拐几个弯.
3指针加减法
指针与整数进行加减运算.
比如指针 + 1;
并不是在指针地址的基础之上加1个字节的地址.而是在这个指针地址的基础之上加1个单位变量占用的字节数.
如果指针的类型是int* 那么这个时候1代表4个字节地址.
如果指针的类型是double* 那么这个时候1代表8个字节地址.
如果指针的类型是float* 那么这个时候1代表4个字节地址.
如果指针的类型是char* 那么这个时候1代表1个字节地址.
- C语言基础-指针深入16
- c语言 指针基础
- C语言指针基础
- C语言基础 指针
- C语言基础 --指针
- C语言基础-指针
- C语言指针基础
- C语言--指针基础
- C语言基础--指针
- 深入理解C语言指针
- 深入理解C语言指针
- 深入理解C语言指针
- 深入理解C语言指针
- 深入理解C语言指针
- C语言指针深入理解
- 深入看待c语言指针
- 深入理解C语言指针
- C语言基础:C语言指针(3) - 指针的指针
- POJ 1444 Parallelepiped walk 笔记
- 闭包
- [bzoj 1103] 大都市meg(树状数组和dfs序)
- 蓝桥杯----生成回文数
- android 四大组件只------BroadCastReceiver(广播)
- C语言基础-指针深入16
- 一道题看透函数柯里化(currying)
- Unity导入STL格式模型(二)
- RecyclerView做ListView的效果,Recyclerview带分隔线的使用
- Tour UVA
- iOS 第三方应用中打开自己的文件(UIDocumentInteractionController)
- 鸡啄米:添加控件变量
- 一、Servlet基础
- jQuery选择器之表单元素选择器