我試圖使用指標遍歷陣列:
#include <iostream>
#include <iterator>
int main()
{
char name[]{ "Abhi" };
for (char* ptr_c{ name }; ptr_c != (ptr_c std::size(name)); ptr_c) {
std::cout << *ptr_c;
}
std::cout << "\n";
}
這導致: Error: Segmentation fault core dumped
但是,在for回圈的條件測驗中:
for (char* ptr_c{ name }; ptr_c != (ptr_c std::size(name)); ptr_c)
^^^^^^
替換ptr_c為name使其作業。為什么?反正不應該name腐爛ptr_c嗎?
uj5u.com熱心網友回復:
ptr_c != ptr_c std::size(name)
這個條件永遠不會是假的。如果向指標添加非零數字,則結果指標永遠不會等于原始指標。因此,無限回圈使陣列溢位。
無論如何不應該將衰減命名為 ptr_c 嗎?
不。name總是衰減到指向第一個元素的指標。ptr_c僅作為第一個元素開始,但在第一次迭代后,它指向其他元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/372820.html
