| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1049 人关注过本帖
标题:讨论动态数组的定义方法
只看楼主 加入收藏
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
 问题点数:0 回复次数:9 
讨论动态数组的定义方法
最近的一些程序都需要用到动态数组,自己也只知道一种方法;就
是int *p;
p=(int*)malloc(n*2)
n为自己输入
我想讨论的是2维动态数组的一些定义方法
大家自己常用的方法不如跟大家一起分享一下~
学习需要讨论!(个人认为)
搜索更多相关主题的帖子: 定义方法 动态 int 讨论 malloc 
2006-05-15 21:40
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
一个下标一个下标来

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-15 22:04
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

Type *Point = NULL;
Point = (Type *)malloc((N*M) * sizeof(Number*Type));
if (Point == NULL)
{
printf("Can't get that many values.\n");
exit (1);
}
//....
free(Point);
Point = NULL;
//....


我的原则很简单:不做不喜欢的事!
2006-05-15 22:35
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 

怎么只有2个回复啊~~~
还有楼上的Type 是指什么类型?


很高兴能和大家一起学习程序! QQ:114109098
2006-05-16 19:48
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
内存本质上是一维的。
所有的多维数组都是“模拟”的,
这才有“按行存储”“按列存储”之分。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-16 19:54
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
哦~

很高兴能和大家一起学习程序! QQ:114109098
2006-05-16 19:56
jzb929
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-4-12
收藏
得分:0 
还有会的吗
大家一起来讨论一下啊
2006-05-25 17:16
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(–★–)内存本质上是一维的。所有的多维数组...
以下是引用–★–在2006-5-16 19:54:00的发言:
内存本质上是一维的。
所有的多维数组都是“模拟”的,
这才有“按行存储”“按列存储”之分。

话虽如此说,模拟一个2维的“按行存储”的动态数组还是有办法的
[题目]申请一个M=4行N=5列的二维动态数组A,以便存放“增广矩阵”。
[思路]申请拥有(M*N)个元素的连续内存,将其首地址写入“行指针”A
[代码]
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define M 4
#define N (M+1)
int main(void)
{
int i,j;
double (*A)[N],sum;
A = malloc(M*N*sizeof(double));
//filling the 2 dimensional array A:
for(i=0;i<M;i++)
{
sum=0;
for(j=0;j<M;j++)
sum+=(A[i][j]=1.0/(i+j+1));
A[i][j]=sum;
}
//check the values of the filled matrix A:
for(i=0;i<M;i++,printf("\n"))
for(j=0;j<N;j++)printf("%lf ",A[i][j]);
getch();
return 0;
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-25 18:21
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用–★–在2006-5-16 19:54:00的发言:
内存本质上是一维的。
所有的多维数组都是“模拟”的,
这才有“按行存储”“按列存储”之分。

听这版主的没错!
I can't agree with you more!


对不礼貌的女生收钱......
2006-05-25 18:25
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
/*二维动态数组的实现技巧*/
#include<stdio.h>
#include<stdlib.h>
main()
{
float**a,*b;
int i,j,m,n;
//创建
printf("lines,cols=");
scanf("%d,%d",&m,&n);
b=malloc(m*n*sizeof(float));
a=malloc(m * sizeof(float));
for(i=0;i<m;i++)a[i]=b+i*n;
//填充
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=i+j;
//效果测试
for(i=0;i<m*n;i++)
{ //先按1维数组输出
printf("%d ",(int)b[i]);
if((i+1)%n==0)printf("\n");
}
printf("\n");
for(i=0;i<m;i++)
{ //再按2维数组输出
for(j=0;j<n;j++)
printf("%d ",(int)a[i][j]);
printf("\n");
}
}

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-28 15:50
快速回复:讨论动态数组的定义方法
数据加载中...
 
   



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

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