关于用二维指针强制指向二维数组的方法 疑问之中

guosen1987 2008-04-08 10:01:33
#include<stdio.h>
void main()
{
int **a,c[2][2]={0};
int i,j;
a=(int **)c;//这里我有没有把a指向一个c呢?它等不等于pointer=&c[0][0];a=&pointer;呢?改如何用一个二维指针指向二维数组(排除用指向一位数组的指针的方法)
for(i=0;i<2;i++)
for(j=0;i<2;j++)
printf("%d ",c[i][j]);;
}
...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2008-04-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 guosen1987 的回复:]
引用 1 楼 taodm 的回复:
建议你找本《C与指针》来解惑。
你先printf出地址值自己看看

经查看,没有赋值成功,那么如何赋值呢?
[/Quote]
看来只好借助一个中间变量指针p了
p0303230 2008-04-08
  • 打赏
  • 举报
回复
因为二维数组一定要指定它第二维也就是[][]后面那个的大小
三 [][][]要指定后俩
Supper_Jerry 2008-04-08
  • 打赏
  • 举报
回复
#include <stdio.h> 
void main()
{
int (*a)[2],c[2][2]={0};
int i,j;
a=c;
for(i=0;i <2;i++)
for(j=0;j <2;j++)
printf("%d ",a[i][j]);;
}
这样就饿可以了。
taodm 2008-04-08
  • 打赏
  • 举报
回复
你换个char数组再试试吧。
还是认真去看《C与指针》吧。指针问题是很复杂的,不是3言2语能搞定的。
不要试图省这个时间
「已注销」 2008-04-08
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int **a,c[2][2]={0};
int i,j;
int *p;
p=&(c[0][0]);
a=&p;
a[0][0]=2;
printf("%d\n%d",&c[0][0],*a);
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%d",c[i][j]);
}用一个中间指针p来解决"c[0][0]是个常量不能取地址后再把地址分给a的"的方法,看来只好这样了.^_^
「已注销」 2008-04-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taodm 的回复:]
建议你找本《C与指针》来解惑。
你先printf出地址值自己看看
[/Quote]
经查看,没有赋值成功,那么如何赋值呢?
独孤过儿 2008-04-08
  • 打赏
  • 举报
回复
指针仅仅是指向某个内存地址的东西,没什么特殊的!你要是喜欢,可以将任何类型的指针互相转换,但是...你有责任和义务去保证使用的安

全!
就呆在云上 2008-04-08
  • 打赏
  • 举报
回复
这样是不能转换的
你要知道:
a是int **类型的

c是int *[2]类型的
即便是强制转换也是注定要失败的!
taodm 2008-04-08
  • 打赏
  • 举报
回复
建议你找本《C与指针》来解惑。
你先printf出地址值自己看看

64,716

社区成员

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

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