|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 帮帮忙,找了半天不知道错哪了,要求用指针变量输出二维数组中任意一个元素的值
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
3939
人关注过本帖,
1
人收藏
标题:
帮帮忙,找了半天不知道错哪了,要求用指针变量输出二维数组中任意一个元素 ...
只看楼主
加入收藏
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
11
楼
收藏
得分:0
回复 5楼 小程序员、
*(p+(i-1)*4+(j-1)
你如果知道 *(p+i)是什么意思 就明白这个了
p+i 也就是p往后第i个地址
其实二维数组在内存也就是一个一维的空间而已,只是通过下标作为标记理解成二维数组
*(p+(i-1)*4+(j-1) 也就是 p 后面 第 (i-1)*4+(j-1)个位置的地址了,p是整形,所以就是表示了那个地址的一个int类型的数据
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-13 12:23
举报帖子
使用道具
赠送鲜花
小程序员、
等 级:
新手上路
帖 子:5
专家分:0
注 册:2012-12-11
第
12
楼
收藏
得分:0
回复 7楼 wp231957
谢谢,,
2012-12-13 12:23
举报帖子
使用道具
赠送鲜花
yaobao
等 级:
蒙面侠
威 望:
4
帖 子:1854
专家分:4121
注 册:2012-10-25
第
13
楼
收藏
得分:0
以下是引用
小程序员、
在2012-12-13 12:20:57的发言:
哦,不是,测试就出差了,没有运行,照二楼说的改了,好了,,
???你的代码我没有改动直接就能运行啊,结果也对,我wintc
认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-13 12:24
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
14
楼
收藏
得分:0
回复 10楼 yaobao
“p=a;这么用应该没问题吧,当然,我接触C没多长时间,我说错的情况占多数"
不可以
因为a是“指针的指针”,而p只是指针。
所以不可以这样
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-13 12:24
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
15
楼
收藏
得分:0
以下是引用
yaobao
在2012-12-13 12:22:22的发言:
p=a;这么用应该没问题吧,当然,我接触C没多长时间,我说错的情况占多数
vc肯定不行 其他编译器就不清楚了
DO IT YOURSELF !
2012-12-13 12:26
举报帖子
使用道具
赠送鲜花
yaobao
等 级:
蒙面侠
威 望:
4
帖 子:1854
专家分:4121
注 册:2012-10-25
第
16
楼
收藏
得分:0
以下是引用
小程序员、
在2012-12-13 12:17:52的发言:
*(p+(i-1)*4+(j-1)
在这具体是什么意思??求详细解释。。谢谢
多维数组在内存中以行主序成线排列,所以(i-1)*4+(j-1)就是计算指针移动多少个元素
认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-13 12:27
举报帖子
使用道具
赠送鲜花
yaobao
等 级:
蒙面侠
威 望:
4
帖 子:1854
专家分:4121
注 册:2012-10-25
第
17
楼
收藏
得分:0
以下是引用
yuccn
在2012-12-13 12:24:29的发言:
“p=a;这么用应该没问题吧,当然,我接触C没多长时间,我说错的情况占多数"
不可以
因为a是“指针的指针”,而p只是指针。
所以不可以这样
学习了,原来2维数组的数组名是指向指针的指针,以前不知道,谢谢
认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-13 12:29
举报帖子
使用道具
赠送鲜花
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
18
楼
收藏
得分:4
回复 13楼 yaobao
看来你是时候换编译器了,呵呵!
[fly]存在即是合理[/fly]
2012-12-13 12:30
举报帖子
使用道具
赠送鲜花
qq839431011
来 自:河北
等 级:
业余侠客
帖 子:105
专家分:296
注 册:2012-12-5
第
19
楼
收藏
得分:4
通过地址引用二维数组元素
&a[0][0]+4*i+j 代表的了数组a[i][j]的地址,能过间址运算符号,表达式*(&a[0][0]+4*i+j)代表了数组元素a[i][j]的存储单元
你定义的那个就应该是 数组元素a[i-1][j-1]的存储单元
穷则变,变则通,通则久 寂寞平淡
2012-12-13 12:34
举报帖子
使用道具
赠送鲜花
深藏依旧
等 级:
论坛游民
帖 子:45
专家分:93
注 册:2012-12-8
第
20
楼
收藏
得分:0
#include <stdio.h>
int main()
{
int a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}};
int (*p)[4],i,j;
p=a;
printf("input i and j:\n");
scanf("i=%d ,j=%d",&i,&j);
printf("a[%d][%d]=%d\n",i,j,*(*(p+i)+j));
return 0;
}
我该的这应该没错吧
怎么结果不对呢
厚积薄发
2012-12-13 12:42
举报帖子
使用道具
赠送鲜花
23
2/3页
1
2
3
快速回复:
帮帮忙,找了半天不知道错哪了,要求用指针变量输出二维数组中任意一个 ...
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.018786 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved