| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 665 人关注过本帖
标题:内存空间怎么申请??
只看楼主 加入收藏
godkid
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-9-13
收藏
 问题点数:0 回复次数:5 
内存空间怎么申请??

帮我看道题好吗

先申请一个内存空间放下二维数组,然后找到只出现一次的行
代码如下,不知怎么修改
clude <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define N 7
#define M 3
int check(int *p,int *q,int length);
int main(void)
{
int i, j;
int *p=(int *)malloc(60);
p=&a;
int a[N][M]={{1,2,3},{2,5,6},{1,2,3},{3,6,9},{3,4,7},{1,2,3},{3,4,7}};
for (i=0; i<N; i++)
{
for (j=0; j<N; j++)
{
if (j==i) continue;
if (check(a[i], a[j], M)) goto NEXT;
}
printf("%3d:\t",i+1);
for (j=0; j<M; j++)
printf("%d ",a[i][j]);
printf("\n");
NEXT:;
}
return 0;
free(p);
}
int check(int *p, int *q, int length)
{
int i=0;
for (; i<length; i++)
if (p[i]!=q[i])
return 0;
return 1;
}

错在内存申请那块儿了,不知怎么改,请达人指点

搜索更多相关主题的帖子: 内存 空间 申请 
2007-11-12 14:49
小狐仙
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-11-12
收藏
得分:0 
不会,C语言?
2007-11-12 15:00
forrestx
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-11-9
收藏
得分:0 

先说几个看上去就不太符合写C语言习惯的地方:
先说这段代码
int *p=(int *)malloc(60);
p=&a;
int a[N][M]={{1,2,3},{2,5,6},{1,2,3},{3,6,9},{3,4,7},{1,2,3},{3,4,7}};
问题1:
变量a,应该是先定义,后使用。你这里正好写反了,不知道是发帖子弄错的,还是程序中就这样写的。

问题2:
malloc(60),一般不这样用.int类型的变量,在有些系统是占2个字节,有些系统是4个字节。
可以改成 (int *)malloc( n * sizeof(int)); n是指你要申请多少个int类型的变量。

2007-11-12 15:22
godkid
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-9-13
收藏
得分:0 
哦,不好意思,确实是粘贴的时候反了,
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define N 7
#define M 3
int check(int *p,int *q,int length);
int main(void)
{
int i, j;
int *p=(int *)malloc(10*sizeof(int));

int a[N][M]={{1,2,3},{2,5,6},{1,2,3},{3,6,9},{3,4,7},{1,2,3},{3,4,7}};
p=&a;
for (i=0; i<N; i++)
{
for (j=0; j<N; j++)
{
if (j==i) continue;
if (check(a[i], a[j], M)) goto NEXT;
}
printf("%3d:\t",i+1);
for (j=0; j<M; j++)
printf("%d ",a[i][j]);
printf("\n");
NEXT:;
}
return 0;
free(p);
}
int check(int *p, int *q, int length)
{
int i=0;
for (; i<length; i++)
if (p[i]!=q[i])
return 0;
return 1;
}
运行后总是提示、:warning C4047:“=”:“int *”differs in
levels of indirection from “int (*)[7][3]”
什么意思啊
2007-11-12 17:22
就是看不懂
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-12
收藏
得分:0 
最后就为你顶一下吧
2007-11-12 18:14
codelet
Rank: 2
来 自:广东深圳
等 级:论坛游民
帖 子:61
专家分:37
注 册:2007-11-6
收藏
得分:0 
将p = &a

改为p = *a

意为 把a[0][0]的地址赋给了指针

Losing emotion, Finding devotion.
2007-11-13 11:06
快速回复:内存空间怎么申请??
数据加载中...
 
   



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

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