【发布时间】:2013-03-28 12:13:21
【问题描述】:
这段代码给了我一个分段错误:
char *s1 = "String 1", *s2 = "String 2";
void swap(char **, char **);
int main(void) {
swap(&s1, &s2);
return 0;
}
void swap(char **p, char **q) {
char **tmp;
*tmp = *p;
*p = *q;
*q = *tmp;
}
但如果我将最后一个函数的主体更改为这段代码,它不会产生任何问题:
char *tmp;
tmp = *p;
*p = *q;
*q = tmp;
我真的不明白为什么我的第一个代码会出现分段错误。 提前致谢。
【问题讨论】:
-
提示:如果
tmp是指向某物的指针,tmp和*tmp有什么区别? -
如果你的第一个版本是
char* tempmem; char **tmp = &tempmem; ...,它会工作(效率低下)
标签: c pointers segmentation-fault