关于C语言中二维数组的P+1与*(P+1)个人浅见
来源:互联网 发布:火花棱镜淘宝 编辑:程序博客网 时间:2024/04/30 19:05
本人第一次在CSDN上发表博客,可能会有一些错误,希望各位大神多多指点!好了,闲言少续,我们进入主题:
在C语言中,有很多数据类型(Int、Float、Char...),那么数组是一种构造类型的数据,个人认为数组是一组具有相同数据类型的数据集合。目前,我们常见的数组为一维、二维的数组。本文以二维数组为题,首先,我们看一段代码
通过代码,我们知道*(P+1),P+1的值是相同的,但含义不同,先说P+1,无论是一维还是二维数组,数组名都可表两层含义:1、指向其起始元素(a[0])的指针;2、表示自身所占的内存(sizeof(a));本文主要以第一层含义为主,二维数组名a,a代表的是二维数组中第一个元素a[0]的地址,即&a[0],而不是数组本身的地址,数组本身地址用(&a)来表示。由于,有int (*p)[3]=a;说明这个数组指针指向了二维数组中第一个元素(a[0]这个数组),注意是指向,那么p+1,也就是指向了a[1]这个数组,(p的类型为int (*)[3]),由此可知,*(p+1)是p+1所指向空间的内容,那么,这个内容是什么呢?在二维数组中,运算结果得到了一个一维数组,那么能够代表数组整体的只有数组名,一维数组名代表的是其首元素的首地址,而不代表一维数组的地址,也就是&a[1][0],那么*(p+1)=&a[1][0];
通过,代码可以看出,推论是正确的。那么如果想取二维数组中的数值,我们可以再进行一次“*”运算,也就是*(*(p+1))即*(&a[1][0]);如代码所示
这就是我个人的愚见,如果哪里有不对的,烦请各位大神指点一二。
1 1
- 关于C语言中二维数组的P+1与*(P+1)个人浅见
- C语言中,二维数组中,p+1与*(p+1)的区别
- 二维数组指针p+1与*(p+1)
- 在C语言中*p++与(*p)++的区别
- c语言数组中 *P和&p;P三者的区别
- 【C语言】*++p,*p++,++*p,++*++p,++*p++
- C语言指针的*p++ ,*p(++), (*p)++,*++p的使用
- C语言指针的*p++ ,*p(++), (*p)++,*++p的使用
- 关于C语言中char FAR *p;定义的介绍
- 【c语言】*(p-1) {指针相关}
- 小记C语言指针p与*p
- [C语言](*p)++ 与 *p++ 与 ++*p 拨开一团迷雾
- 关于c语言二维数组与指针的个人理解及处理办法。
- C/C++面试之算法系列--二维动态数组定义及二维静态数组与**P的区别
- C语言中 %p的含义
- c语言中 %p的含义
- 指针问题:C语言中 int*p[4] 和 int(*p)[4]的区别 等等
- 【C语言】对指针p ,*p ,**p 的认知
- package 和 import 关键字
- android sdk 镜象站点
- Spring MVC之@RequestMapping 详解
- 1.实例变量可见度2.方法3.setter, getter
- android studio中图片格式的问题
- 关于C语言中二维数组的P+1与*(P+1)个人浅见
- Spring Security Remember Me Example
- 15款开源PHP类库
- linux命令大全
- 调试打印ethhdr,iphdr,tcphdr和指定长度的内存块
- 查看二进制中1的个数
- startActivityForResult用法
- A2DP Sink, AVRCP Controller and HFP Client in Android L
- STL中的set和multiset学习小记