Hiển thị kết quả từ 1 đến 3 / 3
  1. #1
    Tham gia
    31-12-2009
    Bài viết
    1,237
    Like
    99
    Thanked 57 Times in 40 Posts

    Tại sao mảng,listbox lại có chỉ số bắt đầu từ 0 ?

    Như câu hỏi trên, mỗi lần sử dụng em thấy nó hơi khó chịu..
    sao chỉ số ko bắt đầu từ 1 cho dễ nhỉ ??
    Vào kiếm tiền az để học kiếm tiền
    Quote Quote

  2. #2
    Tham gia
    10-03-2012
    Location
    Nha Trang
    Bài viết
    192
    Like
    3
    Thanked 33 Times in 31 Posts
    Bởi vì index là con số chỉ thị cho máy tính hiểu bạn đang ám chỉ phần tử lệch đi bao nhiêu so với chính nó. Ví dụ như là mảng A của bạn được cấp bộ nhớ có địa chỉ từ 1024 đến 2048 và mỗi phần tử có 8 bytes.
    Thì phần từ A[0] chính là 1024 + (0*8) = 1024.
    Trong khi đó A[1] = 1024 + (1*8) = 1032 rồi.

    Nên index bắt đầu bằng con số 0 để ám chỉ phần tử đầu tiên chính là ô bộ nhớ đầu tiên tức lệch đi 0*8 bytes so với ô 1024.

    Còn việc khó chịu là do suy nghĩ thôi, quen rồi thì thấy nó hiển nhiên thôi.

    - - - Updated - - -

    Bởi vì index là con số chỉ thị cho máy tính hiểu bạn đang ám chỉ phần tử lệch đi bao nhiêu so với chính nó. Ví dụ như là mảng A của bạn được cấp bộ nhớ có địa chỉ từ 1024 đến 2048 và mỗi phần tử có 8 bytes.
    Thì phần từ A[0] chính là 1024 + (0*8) = 1024.
    Trong khi đó A[1] = 1024 + (1*8) = 1032 rồi.

    Nên index bắt đầu bằng con số 0 để ám chỉ phần tử đầu tiên chính là ô bộ nhớ đầu tiên tức lệch đi 0*8 bytes so với ô 1024.

    Còn việc khó chịu là do suy nghĩ thôi, quen rồi thì thấy nó hiển nhiên thôi.

  3. #3
    Tham gia
    15-03-2010
    Bài viết
    1,562
    Like
    84
    Thanked 1,571 Times in 860 Posts
    Ngôn ngữ gì?
    Trong C, mảng chỉ giản dị là một vùng nhớ liên tục, và tên của mảng là con trỏ địa chỉ ngay đầu mảng.
    Cái ta gọi là chỉ số [n] chỉ là một toán tử trả về phần tử cách con trỏ đầu mảng n vị trí - tùy theo kích cỡ loại phần tử mảng mà con toán này tính ra bao nhiêu bytes.
    Cái ta gọi là phân tử đầu tiên hay phần tử có chỉ số 0 (mang[0]) chính là ô có vị trí cách con trỏ đầu mảng 0 vị trí.
    Bắt đầu bằng 0 sẽ tiện lợi cho các con toán tính theo vị trí rất nhiều. C là ngôn ngữ chuyên về hiệu quả chứ không chủ ý 'dễ sử dụng'.

    tb.
    1. Học sâu hơn về cách viết chồng toán tử sẽ hiểu rõ hơn về toán tử []
    2. Sau khi hiểu về toán từ [] thì cứ việc tự do viết class có phần tử đầu tiên chỉ số là 1 'cho dễ'

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •