标题:字符串、字符数组与指针的问题
只看楼主
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
结帖率:80%
已结贴  问题点数:20 回复次数:2 
字符串、字符数组与指针的问题
(1)
#include<stdio.h>
#include<stdlib.h>

char *test()
{
     static char str[]="helloworld!"; //为什么此处用char str[]程序有错,而用char *str的时候程序正常运行??
     return str;
}
int main()
{
    printf("%s",test());
    system("pause");
    return 0;
   
}
(2)同样一个程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *test()
{
     char str[]="helloworld!";  
     return str;
}
int main()
{
   
    char str1[100];     (1)     
    strcpy(str1,test()); (2)
    printf("%s",str1);       //此时可以正常运行,但是如果上面(1)、(2)两句不要,这句直接改成printf("%s",test()); 为什么就不能正常运行啊??
    system("pause");
    return 0;
   
}
书上是这么解释的,说是用char str[]="abcde"这种形式定义的可以修改,而用char *str="abcde"中指针指向的是一个常量字符串,而且字符串是只读,不可修改的,但是指针可以改啊,指针为什么不可以指向其他的地方??
谁这方面学的好一些能详细解释下吗??谢谢!!
搜索更多相关主题的帖子: test include system return 
2012-11-24 23:36
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:20 
程序代码:
char *test()

 {
      char str[]="helloworld!";
      return str;

 }

根本问题就是  变量的生存期 的问题
2012-11-24 23:58
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
得分:0 
以下是引用寒风中的细雨在2012-11-24 23:58:14的发言:

char *test()
 {
      char str[]="helloworld!";
      return str;
 }
根本问题就是  变量的生存期 的问题

主函数当中除了调用之外,其他地方没用到str啊
收到的鲜花
  • 寒风中的细雨2012-11-25 11:43 送鲜花  10朵   附言:返回了一个不该返回去的值 它有可能失效
2012-11-25 10:40



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




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

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