| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3224 人关注过本帖
标题:将数组的整体赋值改成直接赋值的形式
只看楼主 加入收藏
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
结帖率:64.71%
收藏
已结贴  问题点数:20 回复次数:5 
将数组的整体赋值改成直接赋值的形式
请教一个问题,我想讲下列数组改成直接赋值的形式,应该怎么改??
int (*fenc_mvs[2])[2] = { &frames[b]->lowres_mvs[0][b-p0-1][i_mb_xy], &frames[b]->lowres_mvs[1][p1-b-1][i_mb_xy] };

要求是这样的,举个例子说明:
int a[3]={3,4,5};
改成:
int a[];
a[0]=3;
a[1]=4;
a[2]=5;
搜索更多相关主题的帖子: 在线 频道 
2011-05-14 17:21
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:7 
int (*fenc_mvs[2])[2] = { &frames[b]->lowres_mvs[0][b-p0-1][i_mb_xy], &frames[b]->lowres_mvs[1][p1-b-1][i_mb_xy] };

这样?
int (*fenc_mvs[2])[2];
fenc_mvs[0]= &frames[b]->lowres_mvs[0][b-p0-1][i_mb_xy];
fenc_mvs[1]= &frames[b]->lowres_mvs[1][p1-b-1][i_mb_xy];



2011-05-14 20:34
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:7 
程序代码:
#include <stdio.h>

#define MAX_X_DIMENSION 10
#define MAX_Y_DIMENSION 10
#define MAX_Z_DIMENSION 10
#define MAX_FRAMES      5

typedef struct __Frame {
    int lowres_mvs[MAX_X_DIMENSION][MAX_Y_DIMENSION][MAX_Z_DIMENSION];
}Frame;

Frame  frames[MAX_FRAMES];

static int b = 0;
static int p0 = 1;
static int p1 = 1;
static int i_mb_xy = 0;

int main(int argc, char *argv[])
{  
    int (*fenc_mvs[2])[2];
    fenc_mvs[0] = (int(*)[2])&(&frames[b])->lowres_mvs[0][b-p0-1][i_mb_xy];
    fenc_mvs[1] = (int(*)[2])&(&frames[b])->lowres_mvs[0][b-p0-1][i_mb_xy];
    return 0;  
}
我想你的代码可能是这个意思

技术问题,请不要以短消息方式提问
2011-05-14 21:56
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
回复 3楼 zaixuexi
首先感谢版主和2楼的热情回复,我再交代一下这个我这个问题的背景吧,我是将VS2008先编译通过的代码移植到CCS上(DSP开发软件),
移植之后就出现这个问题。其实跟这个类似的我改过多处,但是其他的地方不是二维数组,是一维数组,修改之后都没有问题。
比如我将
int (*fenc_costs[2]) = { &frames[b]->lowres_mv_costs[0][b-p0-1][i_mb_xy], &frames[b]->lowres_mv_costs[1][p1-b-1][i_mb_xy] };
改为:
int (*fenc_costs[2]);
fenc_costs[0]=&frames[b]->lowres_mv_costs[0][b-p0-1][i_mb_xy];
fenc_costs[1]=&frames[b]->lowres_mv_costs[1][p1-b-1][i_mb_xy];
这样改没有问题。
但是这个二维数组的我就搞不定 了。
我按照3楼版主的方法改后,编译提示下列错误:
error: expression must have pointer-to-struct-or-union type

按照2楼的方法,不提示错误了,我想问一问2楼这样改是的道理?二维数组咋就变长一维数组了,这样可以吗?
2011-05-15 01:03
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:0 
int (*fenc_mvs[2])[2];

我是这么理解的。
这个东西不是二维数组,而是先定义了一个指针数组即*fenc_mvs[2],指针数组中的每个元素指向一个维数大小为二的一维数组。
2011-05-15 12:56
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:7 
先确定数组大小,申请内存后再for赋值,要是大小不定,就用链表
2011-05-15 13:28
快速回复:将数组的整体赋值改成直接赋值的形式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029827 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved