程序功能是将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) |