C : Character swapping
本问题已经有最佳答案,请猛点这里访问。
我需要通过指针交换两个字符,但当我运行此代码时,程序崩溃。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | int main(){ char *s1 ="string1"; swap(st,(st+1)); /* BUT THIS CODE WORKS - Whats the problem? * char s1[] ="string1"; * swap(s1,&s1[1]); */ return 0; } void swap(char * const ptr1, char * const ptr2){ char temp = *ptr1; *ptr1 = *ptr2; *ptr2 = temp; } |
1 | char *s1 ="string1"; |
因为
鉴于在本文件中
不能修改字符串文字。您试图在代码中修改
这一行代码创建了一个不能更改的字符串文本。它只有可读性。
1 | char *s1 ="string1"; |
任何改变它的尝试都会给你一个错误。
当您的评论示例:
1 | char s1[] ="string1"; |
创建实际数组。可以正常编辑和使用。