首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问个很基础的有关问题 为什么会段异常

2012-10-29 
问个很基础的问题为什么会段错误C/C++ code#includestdio.h#includestdlib.hvoid reverse_string(char

问个很基础的问题 为什么会段错误

C/C++ code
#include<stdio.h>#include<stdlib.h>void reverse_string(char *string){    char *last_char;    for(last_char = string; *last_char != '\0'; last_char++)        ;    last_char--;    while(string<last_char)    {            char temp;        temp = *string;        *string++ = *last_char;        *last_char-- = temp;            }    }int main(){    char *str = (char *)malloc(sizeof(char)*20);    str = "123456abcdef";    printf("str1 = %s\n",str);    reverse_string(str);    printf("str2 = %s\n",str);    free(str);    str = NULL;}


把str换成数组的话 就可以执行 是不是因为字符串常量的问题?请问合理的解释应该怎么回答呢。。

[解决办法]
str = "123456abcdef";指向一个常量,不能修改
改为: strcpy(str,"123456abcdef");
[解决办法]
探讨
为什么我把main函数改成strcpy(str,"123456") 还是会产生段错误呢,把“123456”放在一个数组里传进去就可以

热点排行