| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3466 人关注过本帖
标题:给二维数组或多维数组分配内存, 该怎么写和应用?
只看楼主 加入收藏
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
给二维数组或多维数组分配内存, 该怎么写和应用?


int i,j;
int *p=NULL;

p=(int*)calloc(i,j*sizeof(int)); // 这样就可以分配一个 i*j 内存的整型二维数组吗?

实际测试好像不可以.


该怎么写?

2016-06-12 10:45
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:5 
这样应该可以啊,你是怎么测试的?
2016-06-12 11:09
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:5 
你这种写法是把一维当二维用。由于是一级单一指针管理,所以你用的时候不能p[i][j]的用。
需要自己计算偏移量,例如p[i][j] 需要写成 *(p + i*row + j)或是p[i*row+j]。

如果想模拟二维的下标使用那么就需要用指针数组要管理
2016-06-12 13:13
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 3楼 随风飘荡

输入数据可以用for循环输入*(p+i*row+j) 这样输入是吧

那有其他的方式进行二维数组分配内存吗?
2016-06-12 14:34
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
指针数组或者二级指针,他们基本是一样的,思路就是每个指针指向一行

程序代码:
int *p[5];
for( int i = 0; i < 5; i++ )
    p[i] = malloc(sizeof(int)*5);

p[1][2] = 65536; //可以这样用
2016-06-12 16:20
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 5楼 随风飘荡

如果要动态输入, 该怎么写

不是无法输入,就是显示乱码.

for(i=0;i<row;i++)
   for(j=0;j<col;j++)
    scanf("%d", *p++);

for(i=0;i<row;i++)
   for(j=0;j<col;j++)
    printf("%d", *p++);
2016-06-13 09:44
apiqqz
Rank: 2
等 级:论坛游民
威 望:2
帖 子:56
专家分:25
注 册:2011-9-2
收藏
得分:5 
这个语句是在堆上分配一个线性的地址的i*j空间的,不是直接成数组的,需要放到数组里要自己写代码
2016-06-13 12:55
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 7楼 apiqqz

那该怎么写?

2016-06-13 15:24
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
回复 6楼 yuantkong
你指的是怎么把一维数组当二维数组用还是怎么申请不定长的二维数组?
2016-06-14 15:33
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 9楼 随风飘荡

想要申请一个不定长的二维数组, 然后进行动态赋值
该怎么做?

分配后的内存地址该怎么赋值
2016-06-14 16:52
快速回复:给二维数组或多维数组分配内存, 该怎么写和应用?
数据加载中...
 
   



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

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