指针经验总结

VIP免费
2025-02-27 0 0 214.41KB 29 页 5.9玖币
侵权投诉
让你不再害怕指针
前言
:
复杂类型说
要了解指针
,
多多少少会出现一些比较复杂的类型
,
所以我先介绍
一下如何完全理解一个复杂类型
要理解复杂类型其实很简单
个类型里会出现很多运算符
他们也像普通的表达式一样
有优先
其优先级和运算优先级一样
,
所以我总结了一下其原则
:
从变量名处起
根据运算符优先级结合
一步一步分析
.
下面让我们先从简单的类型开始慢慢分析吧
:
int p;
//
这是一个普通的整型变量
int *p;
//
首先从
P
处开始
先与
结合
所以说明
P
是一
//
个指针
然后
再与
int
结合
说明指针所指向
//
的内容的类型为
int
所以
P
是一个返回整
//
型数据的指针
int p[3];
//
首先从
P
处开始
先与
[]
结合
说明
P
是一个数
//
然后与
int
结合
说明数组里的元素是整
//
型的
所以
P
是一个由整型数据组成的数组
int *p[3];
//
首先从
P
处开始
先与
[]
结合
因为其优先级
//
,
所以
P
是一个数组
然后再与
*
结合
说明
//
数组里的元素是指针类型
然后再与
int
结合
,
//
说明指针所指向的内容的类型是整型的
所以
//P
是一个由返回整型数据的指针所组成的数组
int (*p)[3];
//
首先从
P
处开始
先与
结合
说明
P
是一个指针
//
然后再与
[]
结合
"()"
这步可以忽略
只是为
//
了改变优先级
),
说明指针所指向的内容是一个
//
数组
然后再与
int
结合
说明数组里的元素是
//
整型的
所以
P
是一个指向由整型数据组成的数
//
组的指针
int **p;
//
首先从
P
开始
,
先与
结合
说是
P
是一个指针
//
后再与
结合
说明指针所指向的元素是指针
//
后再与
int
结合
说明该指针所指向的元素是整
//
型数据
由于二级指针以及更高级的指针极少用
//
在复杂的类型中
所以后面更复杂的类型我们就
//
不考虑多级指针了
最多只考虑一级指针
.
int p(int);
//
P
处起
先与
()
结合
说明
P
是一个函数
然后进入
//()
里分析
说明该函数有一个整型变量的参
//
然后再与外面的
int
结合
说明函数的返回值是
//
一个整
型数据
I
nt (*p)(int);
//
P
处开始
先与指针结
说明
P
是一个指针
然后与
//()
,
说明指针指向的是一个函
,
然后再与
()
//int
结合
,
说明函数有一个
int
型的参数
再与最外层的
//int
结合
说明函数的返回类型是整型
所以
P
是一个指
//
向有一个整型参数且返回类型为整型的函数的指针
int *(*p(int))[3];
//
可以先跳过
不看这个类型
过于复杂
//
P
开始
先与
()
结合
说明
P
是一个函数
然后进
//
()
里面
,
int
结合
说明函数有一
个整型变量
//
参数
然后再与外面的
结合
说明函数返回的是
//
一个指针
,,
然后到最外面一层
先与
[]
结合
说明
//
返回的指针指向的是一个数组
然后再与
结合
//
明数组里的元素是指针
然后再与
int
结合
说明指
//
针指向的内容是整型数据
所以
P
是一个参数为一个
//
整数据
返回一个指向由整型指针变量组成的数组
//
的指针变量的函数
.
说到这里也就差不多了
我们的任务也就这么多
理解了这几个类型
其它
的类型对我们来说也是小菜
,
不过我们一般不会用太复杂的类型
那样会
大大减小程序的可读性
请慎用
这上面的几种类型已经足够我们用了
.
1
细说指针
指针是一个特殊的变量
它里面存储的数值被解释成为内存里的一个地址
要搞清一个指针需要搞清指针的四方面的内
指针的类型
指针所指向的
类型
指针的值或者叫指针所指向的内存区
指针本身所占据的内存区
我们分别说明
先声明几个指针放着做例子
例一
(1)int*ptr;
(2)char*ptr;
(3)int**ptr;
(4)int(*ptr)[3
];
(5)int*(*ptr)[4];
1.
指针的类型
从语法的角度看
你只要
把指针声明语句里的指针名字去掉
剩下的部
分就是这个指针的类型
这是指针本身所具有的类型
让我们看看例一中各
个指针的类型
(1)int*ptr;//
指针的类型是
int*
(2)char*ptr;//
指针的类型是
char*
(3)int**ptr;//
指针的类型是
int**
(4)int(*ptr)[3];//
指针的类型是
int(*)[3]
(5)int*(*ptr)[4];//
指针的类型
int*(*)[4]
怎么样
找出指针的类型的方法是不是很简单
2.
指针所指向的类型
当你通过指针来访问指针所指向的内存区时
指针所指向的类型决定了
编译器将把那片内存区里的内容当做什么来看待
从语法上看
你只须
把指针声明语句中的指针名字和名字左边的指针声
明符
去掉
剩下的就是指针所指向的类型
例如
(1)int*ptr;
//
指针所指向的类型是
int
(2)char*ptr;
//
指针所指向的的类型是
char
(3)int**ptr;
//
指针所指向的
的类型是
int*
(4)int(*ptr)[3];
//
指针所指向的的类型是
int()[3]
(5)int*(*ptr)[4];
//
指针所指向的的类型是
int*()[4]
在指针的算术运算中
指针所指向的类型有很大的作用
指针的类型
即指针本身的类型
和指针所指向的类型是两个概念
当你
C
越来越熟悉时
你会发现
把与指针搅和在一起的
类型
这个概念分成
"
指针的类型
指针所指向的类型
两个概念
是精通指针的关键点之一
我看了不少书
发现有些写得差的书中
就把指针的这两个概念搅在
一起了
所以看起书来前后矛盾
越看越糊涂
3.
指针的值
----
或者叫指针所指向的内存区或地址
指针的值是指针本身存储的数值
这个值将被编译器当作一个地址
不是一个一般的数值
32
位程序里
所有类型的指针的值都是一个
32
摘要:

让你不再害怕指针前言:复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧:intp;//这是一个普通的整型变量int*p;//首先从P处开始,先与*结合,所以说明P是一//个指针,然后再与int结合,说明指针所指向//的内容的类型为int型.所以P是一个返回整//型数据的指针intp[3];//首先从P处开始,先与[]结...

展开>> 收起<<
指针经验总结.pdf

共29页,预览5页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:29 页 大小:214.41KB 格式:PDF 时间:2025-02-27

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 29
客服
关注