[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
编程语言
> 详细
指针进阶(一)(详细讲解1,2,3)(零基础学习C语言)
时间:
2021-02-18 00:07:50
阅读:
86
评论:
0
收藏:
0
[点我收藏+]
内容:
注意:
数组名是搜元素的地址
就算是用数组接受,本质上接受的还是地址
地址就是指针,指针的大小取决于32位平台还是64位平台
但是int类型的数组元素的大小就是int类型的
所以sz有两种可能1(32位平台)或2(64位平台)
初阶指针内容
一,字符指针
用法一:
用来存放字符变量的地址
用法二:
打印字符数组内容
直接用%s加数组首元素地址即可
根据字符串数组地址找到存储的内容,用%s打印字符串内容
pc里面存放的正是数组首元素地址所以可以直接pc
用法四:
指针变量中储存的是字符a的地址(即字符串的首字符地址)
分析:
指针里存储的是字符串的首字符地址
根据这个字符串的首字符地址找到存储的内容
根据这个存储的字符串内容进行打印
注意:
这种写法是错误的
指针里存储的是字符串的首字符地址
将指针内容改成别的字符地址
那根据改变后的地址将找不到之前的字符窜
最好加上const
如果进行p变量的修改时会报错
推荐两个技术问答社区的网站
推荐一本特别经典的书:
《剑指offer》
牛客网的剑指offer的编程题
重要例题讲解:
输出的是haha不是hehe
两个数组是不同的空间进行存储的,所以两个数组的首元素的地址是不同的
输出的是hehe不是haha
两个常量字符串一模一样,不能进行修改,所以abcdef是用同一块空间存储的
两个指针指向的都是这块空间中a的地址
所以指针p1 , p2 中储存的地址相同
分析:
好的代码习惯:
将存储字符常量的变量前加个const
总结:
1.常量字符串不可修改,存储在一块空间中
2.存储在变量里的字符串可以修改,存储在不同的空间中
3.字符存放在字符数组中的是可以修改的,每个字符存放在相应的字符变量所对应的空间中
4.而存放在字符指针中是不可修改的,是常量字符串,指针里存储的是字符串的首字符地址
二,指针数组
[]的优先级要高于*
所以int* parr[10];为指针数组
定义指针数组变量的时候,[10]说明parr是数组,*说明这个数组是指针,数组的元素个数是10个,int*说明数组的每个指针变量的类型是int*
注意:
arr存放的是数组首元素的地址
指针数组存放的是相同类型变量的地址
指针数组的使用:
方法一:(不常用)
方法二:(实现多维数组)
结果:
分析:
三,数组指针
指向数组的指针
&arr存放的是整个数组的地址
[]的优先级要高于*
所以int* parr[10];为指针数组
int(*parr)[10];为数组指针
定义变量的时候,*说明parr是指针[10]说明是数组,数组的元素个数是10个,int说明指针指向的数组的类型是int
解析:
总之:
&arr和arr的区别主要是:
数组指针的使用:
方法一:(不常用)
方法二:
参数是数组的形式
最常见的一种方式,打印二维数组
解析:
参数是指针的形式
将二维数组arr想象为一个一维指针数组
存放的是二维数组每一行的首元素的地址,
传参的时候传递的是第一行的首元素的地址
根据p+i找到每一行的首元素地址
*(p+i)加一颗*表示,指向每一行的首元素地址后面的内容,相当于知道了一维数组首元素的地址
(*(p+i)+j)相当于根据每一行的首元素地址向后指向每一行中后面的地址
*(*(p+i)+j)解引用操作,根据地址找到地址所指向的内容
相当于(*(p+i))[j]
因为:
类比推得:
总结:
分析:
int(*)[5]是数组类型
parr3[10]是一个有10个元素的数组,每一个元素都指向一个有5个int类型元素的数组
指针进阶(一)(详细讲解1,2,3)(零基础学习C语言)
原文:https://blog.51cto.com/15083388/2630623
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!