请教一个关于数组指针的问题,大侠进来!小女子不胜感激!!

dxrccp 2010-08-15 11:40:02
定义一个数组指针 int *T[10];
该数组中的每一个元素要求指向一个二维数组。比如一个二维数组s[6][6]是事先定义好并赋值的。
让数组中第一个指针指向二维数组S,
T[0]=s;
这样写编译不通过。说类型无法转换。

还望各位大侠出手相救~~~
...全文
1456 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanjieshuijing 2010-08-17
  • 打赏
  • 举报
回复
你定义的好像是指针数组吧
gigibuffon 2010-08-17
  • 打赏
  • 举报
回复
我是来围观小女子的
pengzhixi 2010-08-17
  • 打赏
  • 举报
回复
http://blog.csdn.net/supermegaboy推荐你看看一个人的博客,你对数组和指针的概念还不清楚
dxrccp 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bessics 的回复:]

引用 9 楼 mishiziji198525 的回复:
用指向二维数组的指针int (*T)[row][col];


这个才是正解![]、()的结合性比*要高。

int (*T)[row][col]:
(*T)表示T是一个指向...的指针,[row]表示是一个有row个元素的数组,[col]表示是一个有col个元素的数组,综合起来就是,T是一个指向有ROW个元素的数组的指针,该……
[/Quote]

这个我明白了,现在的问题是。如何定义一个一维数组,使数组中的每个元素都是这种类型的指针?
alandingking 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 woailp___2005 的回复:]

引用 15 楼 gigibuffon 的回复:
我是来围观小女子的

我也是-_-
[/Quote]
好吧,我也是看着标题进来的...

怕弄错的话最好还是用下typedef简化下
Q446512799 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 gigibuffon 的回复:]
我是来围观小女子的
[/Quote]
我也是-_-
cao_julians 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 dxrccp 的回复:]
定义一个数组指针 int *T[10];
该数组中的每一个元素要求指向一个二维数组。比如一个二维数组s[6][6]是事先定义好并赋值的。
让数组中第一个指针指向二维数组S,
T[0]=s;
这样写编译不通过。说类型无法转换。

还望各位大侠出手相救~~~
[/Quote]
将T[i]指向每个二维数组的首元素即可,如
T[0]=&a[0][0];
T[1]=&S[0][0];
......
赵4老师 2010-08-17
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
ljq183 2010-08-17
  • 打赏
  • 举报
回复
int (*T[6])[6];
int s[6][6];
T[0] = s;
...
tczf1128 2010-08-17
  • 打赏
  • 举报
回复
数组指针应该是int (*T)[10];
int *T[10]是定义了一个指针数组,因为[]的优先级大于*。

若定义二维数组s[6][6],只要int (*t)[6]=s就好了啊
flairpower 2010-08-16
  • 打赏
  • 举报
回复
int **T[10];
应该是这样吧。
2维数组是指针的指针。自己试试吧。
yiruirui0507 2010-08-15
  • 打赏
  • 举报
回复
类型不一样啊,你的s是属于二维数组的地址,
而T[0]属于一个int的指针,所以肯定不行。
你可以换成这样

T[0]= s[0]
or
T[0]=(int *)s
sbdt123 2010-08-15
  • 打赏
  • 举报
回复
int*T[10]错误,不能指向二维数组
yzx714 2010-08-15
  • 打赏
  • 举报
回复
定义一个数组指针 int *T[10];
该数组中的每一个元素要求指向一个二维数组。比如一个二维数组s[6][6]是事先定义好并赋值的。
让数组中第一个指针指向二维数组S,
T[0]=s;
这样写编译不通过。说类型无法转换。

还望各位大侠出手相救~~~

int *T[10];是定义了一个10个元素,元素类型为int指针的数组
要定义个每一个元素要求指向一个二维数组的话,应该是int (*ap)[ROW][COL];
fflush 2010-08-15
  • 打赏
  • 举报
回复
当你搞不清楚如何定义一个xx类型的数组时,可以考虑先用typedef定义出xx类型,然后可以直接用xx类型来定义数组。
pengzhixi 2010-08-15
  • 打赏
  • 举报
回复
int array[6][6];
int*p[6]={array[0],array[1],array[2],array[3],array[4],array[5]};

int array[6][6];
int(*p[6])[6]={array};
不知道你要哪种
luciferful 2010-08-15
  • 打赏
  • 举报
回复
类型不一样啊,你的s是属于二维数组的地址,
而T[0]属于一个int的指针,所以肯定不行。
你可以换成这样

T[0]= s[0]
or
T[0]=(int *)s
bessics 2010-08-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mishiziji198525 的回复:]
用指向二维数组的指针int (*T)[row][col];
[/Quote]

这个才是正解![]、()的结合性比*要高。

int (*T)[row][col]:
(*T)表示T是一个指向...的指针,[row]表示是一个有row个元素的数组,[col]表示是一个有col个元素的数组,综合起来就是,T是一个指向有ROW个元素的数组的指针,该数组的元素又是另外一个有col个int型元素的数组。

int *T[col]:(由于[]的结合性比*高)
T[]表示T是一个数组,int *表示指向int型的指针,综合起来就是,T是一个有col个元素的数组,数组里面的每个元素都是一个指向int型数组的指针。
cattycat 2010-08-15
  • 打赏
  • 举报
回复
int (*p)[6]=s;即可。
mishiziji198525 2010-08-15
  • 打赏
  • 举报
回复
用指向二维数组的指针int (*T)[row][col];
加载更多回复(2)

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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