数组指针和指针数组
发布日期:2021-11-20 10:18:02
浏览次数:23
分类:技术文章
本文共 892 字,大约阅读时间需要 2 分钟。
参考链接:
1.数组指针(也称行指针)
①:一维数组:定义 int (*p)[n]; 解释:():为优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。**②:**二维数组:赋给一指针,应这样赋值:
int a[3][4]; int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]所以数组指针也称指向一维数组的指针,亦称行指针。
2.指针数组
①:一维数组: int p[n]; 解释:[ ]:为优先级高,先与p结合成为一个数组,再由int说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]…p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 p=a; 这里p表示指针数组第一个元素的值,a的首地址的值。 ②:二维数组赋给一指针数组: int *p[3]; int a[3][4]; p++; //该语句表示p数组指向下一个数组元素。注:此数组每一个元素都是一个指针 for(i=0;i<3;i++) p[i]=a[i] 这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2] 所以要分别赋值。区别:1.,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。
2.指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
还需要说明的一点就是,同时用来指向二维数组时,其引用和用数组名引用都是一样的。 比如要表示数组中i行j列一个元素: (p[i]+j)、((p+i)+j)、((p+i))[j]、p[i][j]优先级:()>[]>*
转载地址:https://blog.csdn.net/weixin_43223362/article/details/104849095 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月11日 16时43分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
优势丧失
2019-04-26
歪门邪道
2019-04-26
理解String.intern()和String类常量池疑难解析例子
2019-04-26
LeetCode题解(1175):质数排列(Python)
2019-04-26
【Android平台】 Alljoyn学习笔记二 编译自带的demo的步骤
2019-04-26
系统架构设计笔记(58)—— 嵌入式系统概论
2019-04-26
说说 Python 的生成器表达式
2019-04-26
说说 Activiti 中的用户与组的概念
2019-04-26
Emacs-103-使用spacemacs自带配置显示行号
2019-04-27
021_Excel的条件格式
2019-04-27
022_Excel空白值批量填充默认值
2019-04-27
023_emacs git-gutter+报错解决
2019-04-27
世界哲学语录100句(句句珠玑,细细品味)
2019-04-27
三年磨一剑,钉的真好听 | 凌云时刻
2019-04-27
一文读懂 K8s 持久化存储 | 凌云时刻
2019-04-27
CIO:权大、钱多、但难干 | 凌云时刻
2019-04-27
央行DECP开测,拉开全球货币霸权之战大幕 | 凌云时刻
2019-04-27
超越极限:阿里云最新ASPLOS论文解读 | 凌云时刻
2019-04-27
为了永不停机的计算服务 | 凌云时刻
2019-04-27
独家:为了永不停机的计算服务 - 三月月刊
2019-04-27