user-0 提问: 查找  用指针反转字符串 的错误

回复:
user: user-1
content: 引用 2 楼 lymymk 的回复:[quote=引用 1 楼 Baoge_leopard 的回复:] temp也有问题  temp 没什么问题吧，，是一字符型啊，，调试也没问题啊。[/quote] 哦！对，我看错了

user: user-0
content: 引用 1 楼 Baoge_leopard 的回复:temp也有问题  temp 没什么问题吧，，是一字符型啊，，调试也没问题啊。

user: user-1
content: temp也有问题

user: user-0
content: 引用 10 楼 Baoge_leopard 的回复:http://www.cnblogs.com/yezhenhan/archive/2011/10/28/2228083.html 讲的不错，看看  谢谢，，明白了，，

user: user-2
content: #pragma comment(linker,"/SECTION:.rdata,RW") //加这句可以让常量区可写，后果自负！

user: user-1
content: http://www.cnblogs.com/yezhenhan/archive/2011/10/28/2228083.html 讲的不错，看看

user: user-0
content: 引用 7 楼 user-3 的回复:指针的话 s 指向的地址为只读的数据段 $ cat hello.c  int main(int argc, char *argv[]) {         char *s = "hello";          return 0; }  $ gcc -S hello.c $ cat hello.s          .file   "hello.c"         .section        .rodata .LC0:         .string "hello"         .text         .p2align 4,,15 .globl main         .type   main, @function main:         leal    4(%esp), %ecx         andl    $-16, %esp         pushl   -4(%ecx)         pushl   %ebp         movl    %esp, %ebp         pushl   %ecx         subl    $16, %esp         movl    $.LC0, -8(%ebp)         movl    $0, %eax         addl    $16, %esp         popl    %ecx         popl    %ebp         leal    -4(%ecx), %esp         ret         .size   main, .-main         .ident  "GCC: (GNU) 4.2.1 20070719  [FreeBSD]"  $    看不懂啊，，，求解释啊

user: user-0
content: 引用 5 楼 Baoge_leopard 的回复:#include<iostream> using namespace std; void reverse_string(char *str) {      char temp,temp1,temp2;      char *string_start=str;      char *string_end=str;            while(*string_end++)            ;            string_end-=2;                  while(string_start<string_end)      {            temp = *string_start; 	            *string_start=*string_end;             *string_end=temp; 		   string_start++; 		   string_end--;                  }       }  int main() { 	char *str = NULL; 	str = (char *)malloc(10); 	strcpy(str,"abcdefg"); 	cout<<str<<endl; 	reverse_string(str); 	cout<<str<<endl; }  这个没问题，可能你的main（）函数中有问题  int main() {     char *string_p="abcdeww";  /*换成string_p[]="abcdeww",则可以     reverse_string(string_p);     printf("%s",string_p); }

user: user-3
content: 指针的话 s 指向的地址为只读的数据段 $ cat hello.c  int main(int argc, char *argv[]) {         char *s = "hello";          return 0; }  $ gcc -S hello.c $ cat hello.s          .file   "hello.c"         .section        .rodata .LC0:         .string "hello"         .text         .p2align 4,,15 .globl main         .type   main, @function main:         leal    4(%esp), %ecx         andl    $-16, %esp         pushl   -4(%ecx)         pushl   %ebp         movl    %esp, %ebp         pushl   %ecx         subl    $16, %esp         movl    $.LC0, -8(%ebp)         movl    $0, %eax         addl    $16, %esp         popl    %ecx         popl    %ebp         leal    -4(%ecx), %esp         ret         .size   main, .-main         .ident  "GCC: (GNU) 4.2.1 20070719  [FreeBSD]"  $

user: user-0
content: 引用 4 楼 user-3 的回复:是这样调用的吗？ char *s = "hello"; reverse_string(s); 改成 char s[] = "hello"; reverse_string(s); 就好啦！   为什么用指针 就不行呢

user: user-1
content: #include<iostream> using namespace std; void reverse_string(char *str) {      char temp,temp1,temp2;      char *string_start=str;      char *string_end=str;            while(*string_end++)            ;            string_end-=2;                  while(string_start<string_end)      {            temp = *string_start; 	            *string_start=*string_end;             *string_end=temp; 		   string_start++; 		   string_end--;                  }       }  int main() { 	char *str = NULL; 	str = (char *)malloc(10); 	strcpy(str,"abcdefg"); 	cout<<str<<endl; 	reverse_string(str); 	cout<<str<<endl; }  这个没问题，可能你的main（）函数中有问题

user: user-3
content: 是这样调用的吗？ char *s = "hello"; reverse_string(s); 改成 char s[] = "hello"; reverse_string(s); 就好啦！