| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 692 人关注过本帖
标题:C编程指针函数问题
只看楼主 加入收藏
hdshdzh
Rank: 2
等 级:论坛游民
帖 子:77
专家分:11
注 册:2010-5-13
结帖率:92.31%
收藏
已结贴  问题点数:10 回复次数:5 
C编程指针函数问题
#include<stdio.h>
int findmax(int *p,int m,int n,int *prow,int *pcol);
void main()
{
int *pscore,i,j,m,n,maxscore,row,col;
printf("please enter array size m,n:");
scanf("%d,%d",&m,&n);
pscore=(int *) calloc(m*n,sizeof(int));
if(pscore==NULL)
{
printf("no enough memory!\n");
exit(0);
}
printf("please enter the score:\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d\n",&pscore[i*n+j]);
maxscore=findmax(pscore,3,4,&row,&col);
printf("maxscore=%d,class=%d,number=%d",maxscore,row+1,col+1);
free(pscore);
}
int findmax(int *p,int m,int n,int *prow,int *pcol)
{
int i,j,max;
max=p[0];
*prow=0;
*pcol=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(p[i*n+j]>max)
{
max=p[i*n+j];
*prow=i;
*pcol=j;
}
return(max);
}这个pscore=(int *) calloc(m*n,sizeof(int));
if(pscore==NULL)申请字节空间。最后free(pscore);。这有什么用,申请了又放出来,不用这个不是写的更简洁吗,有这个对个程序有什么用。不解
搜索更多相关主题的帖子: 指针 函数 
2010-05-18 17:05
嘿嘿1314
Rank: 2
等 级:论坛游民
帖 子:6
专家分:26
注 册:2010-5-10
收藏
得分:1 
Malloc()函数用来在堆中申请内存空间,free()函数释放原先申请的内存空间。Malloc()函数是在内存的动态存储区中分配一个长度为size字节的连续空间。其参数是一个无符号整型数,返回一个指向所分配的连续存储域的起始地址的指针。当函数未能成功分配存储空间时(如内存不足)则返回一个NULL指针。
  由于内存区域总是有限的,不能无限制地分配下去,而且程序应尽量节省资源,所以当分配的内存区域不用时,则要释放它,以便其他的变量或程序使用。
总之malloc()跟free()要配对使用。。。
2010-05-18 17:32
冥卫
Rank: 8Rank: 8
来 自:深山老林
等 级:蝙蝠侠
帖 子:280
专家分:772
注 册:2010-4-20
收藏
得分:1 
那是释放的作用
2010-05-18 18:20
yc2575757
Rank: 7Rank: 7Rank: 7
来 自:北京
等 级:黑侠
威 望:1
帖 子:113
专家分:522
注 册:2010-5-7
收藏
得分:1 
你这小程序去了free无所谓,但如果你把这个程序做个1000次的循环就会内存很高,就会卡到死。。。所以这是释放内存的好处就出来了~~
2010-05-18 18:33
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:1 
C很自由,不释放也不会管你。
这个道理是这样的,内存好比一个杯子,开始这个杯子没有水,然后你malloc了些水进去(没装满),某个时候你又malloc了些水进去,你说这个怀子是不是迟早会给你malloc满,满了的时候你再malloc水进去,水是不是会流出来,这就叫所谓溢出。如果你想你的怀子还要以继续malloc水进去而又不会溢出,你是不是得倒(free)些水出去。

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-05-18 18:36
zyzab
Rank: 2
等 级:论坛游民
帖 子:29
专家分:25
注 册:2010-5-13
收藏
得分:1 
c中不像java,会自动用完空间后,自动释放,c需要用free()释放空间,释放空间的作用就是清除开辟的空间,当函数做完时,就不再需要空间了,所以释放出来,给电脑内存,不要浪费内存了。
2010-05-18 19:19
快速回复:C编程指针函数问题
数据加载中...
 
   



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

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