| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 424 人关注过本帖
标题:请教各位大侠,C语言怎么定义一个动态数组
只看楼主 加入收藏
心晴雨亦晴
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
请教各位大侠,C语言怎么定义一个动态数组
小弟做一个opencv项目,需要定义一个二维数组存放读取的图片的灰度值,但是行和列是根据图片大小,通过int width=src->width;的width确定的,请大家帮忙
搜索更多相关主题的帖子: C语言 图片 动态 项目 C语言 图片 动态 项目 
2015-03-06 20:37
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:20 
用动态内存分配啊,malloc函数。
举个例子。
# include<stdio.h>
# include <malloc.h>
int main(void)
{
    int (*p)[2];  //定义一个用来指向二维数组的指针,[ ] 里面的可以根据实际修改,你的二维数组有几列,就是几
    int i,j,t=1;
    p=(int (*)[2]) malloc (3*(sizeof(int [2])));   //强制转换成int(*)[2]型的指针
                                              // 3 是二维数组的行数。
    for(i=0;i<3;i++)
     for(j=0;j<2;j++)
      *(*(p+i)+j)=t++;                   //为二维数组内的元素赋值
      
    for(i=0;i<3;i++)
     for(j=0;j<2;j++)
      printf("%d\n",*(p[i]+j));         //输出
      free(p);                        //释放掉二维数组占得内存
    return 0;
}

你醒了?快起来敲代码!!
2015-03-07 17:32
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
第一次没懂你的意思,现在做成函数,会更灵活。你再用一个函数测图片的宽高,得出宽高值,调用我写的函数,把宽高值发送进去。
# include<stdio.h>
# include <malloc.h>
void test(int row,int col);
int main(void)
{
    test(3,2);
    return 0;
}
 
void test(int row,int col)
{
    int (*p)[col];
    int i,j,t=1;
   
    p=(int (*)[col]) malloc (row*(sizeof(int [col])));
   
    for(i=0;i<row;i++)
     for(j=0;j<col;j++)
      *(*(p+i)+j)=t++;
      
    for(i=0;i<row;i++)
     for(j=0;j<col;j++)
      printf("%d\n",*(p[i]+j));
      free(p);
 }

你醒了?快起来敲代码!!
2015-03-07 17:45
快速回复:请教各位大侠,C语言怎么定义一个动态数组
数据加载中...
 
   



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

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