Đây là mã:Làm thế nào để xác định kết thúc của một mảng số nguyên khi thao tác với con trỏ nguyên?
int myInt[] ={ 1, 2, 3, 4, 5 };
int *myIntPtr = &myInt[0];
while(*myIntPtr != NULL)
{
cout<<*myIntPtr<<endl;
myIntPtr++;
}
Output: 12345....<junks>..........
Đối với mảng nhân vật: (Kể từ khi chúng tôi có một nhân vật NULL ở cuối, không có vấn đề trong khi lặp lại)
char myChar[] ={ 'A', 'B', 'C', 'D', 'E', '\0' };
char *myCharPtr = &myChar[0];
while(*myCharPtr != NULL)
{
cout<<*myCharPtr<<endl;
myCharPtr++;
}
Output: ABCDE
Câu hỏi của tôi là kể từ khi chúng ta nói thêm NULL nhân vật như là kết thúc của chuỗi, chúng tôi loại trừ các vấn đề như vậy! Nếu trong trường hợp, quy tắc thêm 0 vào cuối mảng nguyên, chúng ta có thể tránh được vấn đề này. Nói gì?
Đâu là tiêu chuẩn :: bắt đầu/kết thúc được xác định? Nó có đi kèm với C++ 0x không? –
@Christian: Có hoặc với Boost. – UncleBens
@Christian Có đây là một tính năng mới của C++ liên quan đến Phạm vi. Boost.Range bao gồm điều này và nhiều hơn nữa, đơn giản hóa rất nhiều thuật toán trên trình tự. –