我有一個簡單的指向數組的指針,我想扭轉這種陣列,這是我寫的代碼:反向指針數組
void str_reverse(char *s) {
int l, r;
l = 0;
r = str_len(s) - 1;
char temp;
printf("length %i ", r);
while (l <= r) {
temp = *(s + l);
printf("\n%c [%i] | %c [%i]\n", temp, l, *(s + r), r);
*(s + l) = *(s + r);
*(s + r) = temp;
r--;
l++;
}
}
正如你可以看到我用這個功用:
int str_len(char *p) {
int l = 0;
while (*(p + l) != '\0') {
// printf("%c %i", *(p + l),l);
l++;
}
return l;
}
我爲了得到我數組的長度,這是我的小主
int main() {
char *s = "Hallo world!";
str_reverse(s);
return 0;
}
這是輸出:
length 10
H [0] | d [10]
Bus error: 10
現在我試着只打印值,所以在str_reverse的while循環我評論這兩條線:
*(s + l) = *(s + r);
*(s + r) = temp;
這是輸出:
H [0] | ! [11]
a [1] | d [10]
l [2] | l [9]
l [3] | r [8]
o [4] | o [7]
[5] | w [6]
那很好!但是,我如何儲存它們?預先感謝您
出現這種情況,當你調用指針= >>陣列。指針不是一個數組而不是一個指針。 – Michi
指針指向「某物」,但一個數組不指定。陣列內有「某物」。將被複制。這就是所有......所以如果你想在指針內複製「某些東西」,那麼你需要分配一些內存來使用指向那裏的指針。 – Michi