求教:关于指针与数组的问题,麻烦各位了

wengchaohui 2008-01-11 10:53:05
是这样的,
关于指针和数组的问题:
#include<iostream.h>
void main()
{int a[2][3]={1,2,3,4,5,6};
int (*p)[3]=a;}
这样是正确的,可是
#include<iostream.h>
void main()
{int a[2][3]={1,2,3,4,5,6};
int (*p)[2]=a;}//int (*p)[3]=a;}改为int (*p)[2]=a;}//
为什么就不行了呢,小弟真的不知道,,
...全文
123 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
anzhuge 2008-01-24
  • 打赏
  • 举报
回复
个人认为,
你定义的int (*p)[2],p是一个指向整形数组的指针并且数组有三个元素
eatta 2008-01-15
  • 打赏
  • 举报
回复
行和列注意不要弄混就好了
eatta 2008-01-12
  • 打赏
  • 举报
回复
长度都不一样.
如果你定义的是2的话,则p自增是增加2个元素长度的地址,而如果是3的话,每次自增是增加3个元素长度的地址.
因为你的p定义的第二维是2,而数组的第二维是3,这样类型不同.是不可以赋值的.
否则,会出现增长长度不一样的问题,这是绝对不允许的,所以会出错
sc_valentine21 2008-01-12
  • 打赏
  • 举报
回复
对应!呵呵
wengchaohui 2008-01-12
  • 打赏
  • 举报
回复
多谢各位好心人,经过各位指点,以下是我的看法不知道 对不对,我试验了一下,发现

#include<iostream.h>
void main()
{int a[2][3]={{1,2},{3,4},{5,6}};
}//错的,
必须是
#include<iostream.h>
void main()
{int a[2][3]={{1,2,3},{4,5,6}};
}// 我本来以为是2列3行也行。原来必须是2行3列,,,谢谢各位
HelloDan 2008-01-12
  • 打赏
  • 举报
回复
其实C、C++没有二唯数组,所谓的二唯只是数组的数组。
int a[2][3]={1,2,3,4,5,6};
int (*p)[2]=a;}//int (*p)[3]=a;}改为int (*p)[2]=a;}//
你上面定义的是两个一维数组里面分别装有一个有三个元素的数组,故要对应,
acrobatyuer 2008-01-11
  • 打赏
  • 举报
回复
当然不一样啦!
数组其实也是个指数你不知道吗?
int a[3];//定义个这样的数组就相当于定义了一个有序链表,*a就是a[0];
int a[2][3];//定义个这样的数组就相当于定义了两个a[3]数组,变种思维说,其实二维数组就是二级指针的概念
ryfdizuo 2008-01-11
  • 打赏
  • 举报
回复
本来就不一样的啊,
数组的第二维是3啊,
grellen 2008-01-11
  • 打赏
  • 举报
回复
改了以后,a[2][3]是两行三列的数组,而p是两列的数组,赋值就出错了

64,632

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧