| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 423 人关注过本帖
标题:程序优化 为什么第一个程序比第二个快?
只看楼主 加入收藏
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
结帖率:100%
收藏
 问题点数:0 回复次数:2 
程序优化 为什么第一个程序比第二个快?
当把第二个代码的char *s;改为static char *s;是第二个快   为什么呢?
第一个:
程序代码:
#include<stdio.h>
#include<stdlib.h>
void f(long m,int n){
    static char *s;
    long *a;
    int i;
    s=(char *)malloc(n);
    a=(long *)malloc(n*sizeof(long));
    for(i=0;i<n;i++){
        a[i]=m%3;
        m=m/3;
    }
    for(i=0;i<n;i++){
        sprintf(&s[i],"%d",a[n-1-i]);
    }
    printf("%s ",s);    
}
int main(){
    int i,n;
    long j;
    printf("请输入位数:\n");
    while(scanf("%d",&n)){
        for(i=1;i<=n;i++){
            for(j=0;j<=(pow(3,i)-1);j++){
                f(j,i);
            }        
        }
        printf("\n");            
    }
}

第二个:
程序代码:
#include<stdio.h>
#include<stdlib.h>
void f(long m,int n){
    char *s;
    int i;
    s=(char *)malloc(n+1);
    for(i=0;i<n;i++){
        s[n-1-i]='0'+m%3;
        m=m/3;
    }
    s[i]='\0';
    printf("%s ",s);    
}
int main(){
    int i,n;
    long j;
    printf("请输入位数:\n");
    while(scanf("%d",&n)){
        for(i=1;i<=n;i++){
            for(j=0;j<=(pow(3,i)-1);j++){
                f(j,i);
            }        
        }
        printf("\n");            
    }
}


[ 本帖最后由 lxsjzbd 于 2012-4-8 13:39 编辑 ]
2012-04-08 13:09
xp0213
Rank: 7Rank: 7Rank: 7
来 自:湖北武汉
等 级:黑侠
威 望:1
帖 子:222
专家分:524
注 册:2011-10-26
收藏
得分:0 
用 static 定义一个变量,当第一次调用函数结束时,static char *s 变量不会被释放。
2012-04-08 20:29
bccnyouke
Rank: 2
等 级:论坛游民
帖 子:26
专家分:49
注 册:2012-11-23
收藏
得分:0 
你们老师居然能教你们写出这种代码?
优化在哪里了?我是没看出来
2012-11-27 17:55
快速回复:程序优化 为什么第一个程序比第二个快?
数据加载中...
 
   



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

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