1 c swap pointers segmentation-fault
我正在尝试编写一个简单的C程序来反转字符串.代码如下:
void swap(char* a, char* b){
char* temp;
*temp = *a;
*a = *b;
*b = *temp;
}
char* reverseString(char* str){
int length = strlen(str);
int i=0;
for(i=0; i<(length/2); i++){
swap(&str[i], &str[length-i-1]);
}
return str;
}
int main(){
char str[] = "Hello World";
reverseString(str);
printf("%s\n",str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它确实打印出正确的结果,然后它发出了一个SEGMENTATION FAULT.它发生在main函数的"return 0"语句中.
你能帮我弄清楚为什么会出现SEG FAULT.
谢谢.
在你的swap()功能中,问问自己:
void swap(char* a, char* b){
char* temp;
Run Code Online (Sandbox Code Playgroud)
问:temp现在指向哪里?
答:未知,可能是危险的地方.
*temp = *a;
Run Code Online (Sandbox Code Playgroud)
然而我们只是写了一些东西到那个地方.
相反,使用char:
void swap(char* a, char* b){
char temp;
temp = *a;
*a = *b;
*b = temp;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |