此代碼給了我一個分段錯誤:爲什麼使用此C代碼得到分段錯誤?
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'有什麼區別? – 2013-04-05 22:49:26
如果你的第一個版本是'char * tempmem; char ** tmp =&tempmem; ...' – 2013-04-05 22:57:03