我用字符串中的數位以下功能:爲什麼向前移動指針不會影響外部函數?
int countSpace(char *str) {
int nSpaces = 0;
while (*(str) != '\0') {
if (*(str) == ' ') {
nSpaces++;
}
str++;
}
return nSpaces;
}
我用這個函數是這樣的:
char a[]="Hello ";
printf("%d", countSpace(a));
我的問題是,當我這樣做:printf("%s", a);
,呼籲countSpace後,爲什麼a
沒有指向最後?我的意思是,我已經增加了countSpace函數內的指針,但外部似乎仍然指向最初。這是爲什麼?
我知道我在countSpace函數內的* str所做的更改會影響外部,所以如果例如我這樣做:str[0] = 'p'
,在函數的外部,a的值將是pola
。所以,我不明白爲什麼指針仍然指向一開始,即使在我已經使它前進的函數中。
由於串它只是複製的char數組。將指針傳遞給指針,它將起作用。 –
http://stackoverflow.com/questions/4426474/is-passing-pointer-argument-pass-by-value-in-c – DCoder