【发布时间】:2013-01-10 21:39:10
【问题描述】:
我需要通过指针交换两个字符,但是当我运行这段代码时,程序崩溃了。
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;
}
【问题讨论】:
-
因为,当您为字符数量分配内存时,它只能读取,不能执行或写入。当您尝试在那里写时,它会给您例外。