Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160478
  • 博文数量: 83
  • 博客积分: 3956
  • 博客等级: 中校
  • 技术积分: 663
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-24 16:29
文章分类

全部博文(83)

文章存档

2010年(83)

我的朋友

分类: C/C++

2010-10-14 17:27:59

程序功能是将hello 转换成大写字母输出

代码如下:
//sram.c
#include
#include
char *upcase(char *inputstring);

int main(void)
{
    char *str1;
    str1 = upcase("hello");
    printf("str1= %s\n", str1);
    return 0;
}

char *upcase(char *oldstring)
{
    int counter;
    char newstring[100];
    strcpy(newstring, oldstring);

    for(counter = 0; counter < strlen(newstring);
                    counter++)
    {
        if (newstring[counter] >= 97 && newstring[counter] <= 122)
        newstring[counter] -= 32;
    }
    return newstring;
}

此程序编译出错!

提示:warning: function returns address of local variable
解释:函数中的局部变量存放在stack中,函数执行完成之后会自动释放,因此不应将局部变量的指针作为返回值。

解决方法:

1.定义static
char newstring[100];

2.将数组newstring 定义在主函数中,并作参数传给子函数。


阅读(788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~