我有一個函數,它將char *str
和const char a
作爲參數,並將*str
中的每個單獨的a
更改爲'X'
。因爲我無法修改值指針點,如*str = 'X'
。我如何去解決這個問題?如何更改指針的值C
-6
A
回答
0
讓我們假設我們有這樣的功能:
int change_char(char *str, const char a, const char b) {
int n = 0;
if (str) {
while (*str) {
if (*str == a) {
*str = b; // Can I modify the value pointed by the pointer?
++n;
}
++str; // Can I modify the pointer?
}
}
return n;
}
當我們調用該函數,如下面的示例中,指針是按值傳遞的,所以你不能修改原始指針(只它的本地副本),但您可以修改該指針指向的對象的值:
char test[] = "Hello world!";
change_char(test, 'o', 'X');
printf("%s\n",test); // it will output HellX wXrld!
+0
我在原始測試中使用了char * tset =「Hello world」。結果我每次運行它時都會得到相同的字符串。你能解釋一下更具體的差異嗎?謝謝! –
+0
@KevinWei'「Hello world」'是一個常量字符串文字,你可以用'char test [] =「Hello world!」來初始化一個以null結尾的字符串;'然後修改它中的字符,但是如果你聲明一個像char * test =「Hello world」這樣的指針,它將指向一個costant,並且任何修改這個chars的嘗試都會導致運行時錯誤。在這種情況下,您應該分配內存然後複製字符串。看一個實例[這裏](https://ideone.com/0dlUAJ)。 –
相關問題
- 1. 如何更改struct中指針指向的值c?
- 2. 如何更改char指針的值?
- 3. C++ vector如何更改內部指針
- 4. C++返回指針值不可更改
- 5. 通過指針c更改常量值++
- 6. 更改指針指向的值的值C
- 7. C++指針值改變
- 8. 更改指針指針指針引用
- 9. 在C中,如何更改指針指向的內存地址?
- 10. 未指定C指針地址更改
- 11. 指針值C空指針
- 12. C++:禁止類更改值由指針成員變量指向
- 13. c#更改方法的指針.NET 3.5
- 14. 更改常量變量的指針C++
- 15. 如何將鼠標指針更改爲手指指針?
- 16. 如何更改JavaScript中的「this」指針?
- 17. 如何更改函數中的指針?
- 18. 更改函數中指針的值
- 19. 更改指針值的問題
- 20. C中的指針(指針的值)?
- 21. 如何打印C++中指針指針的所有值?
- 22. 如何更改結構體指針的單個成員的值?
- 23. C:memcpy更改指針?
- 24. jqgrid更改指針
- 25. 更改指針file_put_contents()
- 26. C++如何通過映射值指針更新成員值
- 27. 指針值改變
- 28. 修改指針值
- 29. C++如何處理函數中指針和引用的更改?
- 30. 如何在C++'11中更改指針的所有權?
爲什麼說你不能執行'* str ='X''? – psmears
調用該函數的代碼應確保通過可變緩衝區 –
您可能會發現http://stackoverflow.com/questions/2229498/passing-by-reference-in-c有幫助。 – stonemetal