标题:请问,您会使用 c 吗?
只看楼主
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
结帖率:94.72%
已结贴  问题点数:20 回复次数:10 
请问,您会使用 c 吗?
试试我精心为您定制的6道题,您能指出以下程序存在什么问题吗?
(1)
#include <stdio.h>
int* blueguy(void);
int main(void)
{
   
    int *greengirl = NULL;
    greengirl  = blueguy();
    printf("%d", greengirl[0]);
    return 0;     
}
int* blueguy(void)
{
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    return a;
}

(2)
#include <stdio.h>
int main(void)
{
   
    char* blueguy;
    scanf("%s", blueguy);
    puts(blueguy);
    return 0;   
}

(3)
#include <stdio.h>
int main(void)
{
   
    char* blueguy = "freengirl";
    blueguy[0] = 'g';
    puts(blueguy);
    return 0;   
}

(4)
#include <stdio.h>
int factorial(int n);
int main(void)
{
    int blueugy, greengirl ;
    scanf("%d", &blueguy);
    greengirl = factorial(blueguy);     
    printf("%d", greengirl);
    return 0;   
}

int factorial(int n)
{
    if(n == 0)
    {
        return 1;
    }
    return factorial(n-1) * n;
}

(5)
#include <stdio.h>
#include <stdlib.h>
int main(void)
char *blueguy(void);
int main(void)
{
    char *greengirl = blueguy();
    greengirl[0] = 'b';
    puts(greengirl);

    return 0;
}

char *blueguy(void)
{
    char *x = malloc(10);
    strcpy(x, "alueguy");
    return x;
}

(6)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
    char *a = "blueguy";
    char *b = malloc(strlen(a));
    strcpy(b, a);
    puts(b);
    return 0;
}

[ 本帖最后由 BlueGuy 于 2010-5-30 10:54 编辑 ]
搜索更多相关主题的帖子: void 定制 include return 
2010-05-30 10:18
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
原本我打算录入到 Vc6.0调试指南的, 不过我觉得还是先提出来给大家玩玩再说 ,/

我就是真命天子,顺我者生,逆我者死!
2010-05-30 10:29
kingsroot
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:284
专家分:1159
注 册:2010-3-28
得分:3 
#include <stdio.h>
int* blueguy(void);
int main(void)
{
   
    int *greengirl = NULL;
    greengirl  = blueguy();
    printf("%d", greengirl[0]);
    return 0;     
}
int* blueguy(void)
{
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    return a;
}
返回指向堆栈的指针 结果无定义了
#include <stdio.h>
int main(void)
{
   
    char* blueguy;
    scanf("%s", blueguy);
    puts(blueguy);
    return 0;   
}
指针未初始化
#include <stdio.h>
int main(void)
{
   
    char* blueguy = "freengirl";
    blueguy[0] = 'g';
    puts(blueguy);
    return 0;   
}
blueguy指向的字符串地址是只读 不能修改
#include <stdio.h>
int factorial(int n);
int main(void)
{
    int blueugy;
    scanf("%d", &blueguy);
    greengirl = factorial(blueguy);     
    printf("%d", greengirl);
    return 0;   
}

int factorial(int n)
{
    if(n == 0)
    {
        return 1;
    }
    return factorial(n-1) * n;
}
greengirl没定义

#include <stdio.h>
#include <stdlib.h>
int main(void)
char *blueguy(void);
int main(void)
{
    char *greengirl = blueguy();
    greengirl[0] = 'b';
    puts(greengirl);

    return 0;
}

char *blueguy(void)
{
    char *x = malloc(10);
    strcpy(x, "alueguy");
    return x;
}
没有判断内存是否申请成功

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
    char *a = "blueguy";
    char *b = malloc(strlen(a));
    strcpy(b, a);
    puts(b);
    return 0;
}
malloc申请的内存少了  已经溢出了 改成char *b = malloc(strlen(a)+1);
2010-05-30 10:47
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
//greengirl没定义
是我忘了定义了,已更正

我就是真命天子,顺我者生,逆我者死!
2010-05-30 10:55
kingsroot
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:284
专家分:1159
注 册:2010-3-28
得分:0 
#include <stdio.h>
int factorial(int n);
int main(void)
{
    int blueugy,greengirl;
    scanf("%d", &blueguy);
    greengirl = factorial(blueguy);     
    printf("%d", greengirl);
    return 0;   
}

int factorial(int n)
{
    if(n == 0)
    {
        return 1;
    }
    return factorial(n-1) * n;
}
没有看出什么大毛病 就是感觉用int有点不妥,因为n=17的时候 返回就溢出了
2010-05-30 11:06
guxinxiaohan
Rank: 2
等 级:论坛游民
帖 子:6
专家分:12
注 册:2010-5-11
得分:3 
怎么没有人给我看看我的   啊!!!!!!!!!!!!
2010-05-30 11:12
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
回复 5楼 kingsroot
blueguy < 0, 会导致栈溢出

我就是真命天子,顺我者生,逆我者死!
2010-05-30 11:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
挺厉害的啊,多向你学习,/

我就是真命天子,顺我者生,逆我者死!
2010-05-30 11:21
kingsroot
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:284
专家分:1159
注 册:2010-3-28
得分:0 
哦 对头  输入负数 会被自动变成一个超大数  是要堆栈溢出  呵呵
2010-05-30 11:36
gaoce227
Rank: 4
来 自:山东
等 级:业余侠客
帖 子:134
专家分:218
注 册:2008-4-5
得分:3 
受益匪浅,又明白了一点return返回的问题。

[ 本帖最后由 gaoce227 于 2010-5-30 11:56 编辑 ]
2010-05-30 11:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-308688-1-1.html




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

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