鱼C论坛

 找回密码
 立即注册
查看: 3704|回复: 6

[技术交流] 讨论:到底有什么区别?

[复制链接]
头像被屏蔽
发表于 2011-2-16 11:37:52 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-2-16 17:47:11 | 显示全部楼层
一步一步来,*(*(pt+i)+j )这样我们定位的是 i 行 j 列的元素,对吧?

那么*(pt+i)+j 想当然就是 i 行 j 列的地址了。

那么 pt + i 是什么?是 i 行的地址,那么我再加 j 那就是 ( i + j ) 行的地址啦~

呵呵,没了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-2-16 19:28:13 | 显示全部楼层
还可以这么看:
若:typedef int vec[3];
则:
int test[4][3]={1,2,3,4,5,6,7,8,9,0,9,10};
int (*pt)[3]=test;
等价于
vec test[4]={1,2,3,4,5,6,7,8,9,0,9,10};
vec* pt = test;
进一步,
(pt+i)+j等价于pt+(i+j)
*(pt+i)+j 等价于pt[i]+j
如果对上述描述还是感觉比较抽象,不妨把类型vec当成类型int来看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
 楼主| 发表于 2011-2-16 20:53:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
 楼主| 发表于 2011-2-16 20:54:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-2-26 09:55:14 | 显示全部楼层
我勒个去,俺是零基础,各种看不懂,但还是支持下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2014-3-14 22:11:14 | 显示全部楼层
总结一下
注意pt指向整个数组的首地址,而pt[0]是指向数组第一行的首地址
printf("%x\n",pt[0]);
printf("%x\n",(*pt)[0]);
printf("%x\n",pt[1]);
printf("%x\n",(*pt)[1]);
printf("%x\n",test);
12ff50
1
12ff5c
2
12ff50
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-23 00:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表