Tôi đã đọc question này, tôi muốn hỏi thêm về mã mà anh đã thể hiện nghĩaNhầm lẫn giữa gian và thời gian địa phương trong mã thực tế đời sống
for(i = 0; i < 20; i++)
for(j = 0; j < 10; j++)
a[i] = a[i]*j;
Các câu hỏi là,
- Tôi hiểu địa phương thời gian, tôi nghĩ rằng các tham chiếu đến i và j nên là địa phương thời gian. Tôi có đúng không?
- Tôi cũng hiểu địa phương không gian, vì câu hỏi tôi đã liên kết câu trả lời có liên quan đến [i] nên là địa phương không gian. Tôi có đúng không?
Người đó nói,
"Các vòng lặp bên trong sẽ gọi địa chỉ bộ nhớ tương tự khi truy cập vào một [i] mười lần vì vậy đó là một ví dụ cho địa phương thời gian tôi đoán. Nhưng có địa phương không gian cũng trong vòng lặp trên? "
Tôi không đồng ý với dự đoán của anh ấy. Do các tham chiếu được tạo bởi [i] nên là địa phương không gian (chúng sẽ tham chiếu phần tử tiếp theo trong khối). Tôi có đúng không?
Cảm ơn câu trả lời. Bạn có thể làm rõ các khái niệm của tôi về các biến và địa phương. Biến j sẽ được tăng lên mỗi khi vòng lặp bên trong thực hiện và sẽ nhận được một giá trị mới. Lấy một giá trị mới KHÔNG PHẢI là không gian địa phương (mặc dù nếu nó tăng thêm 1 lần mỗi lần)? –
@Akito chính xác, không gian địa phương chỉ có thể xảy ra giữa hai * vị trí * khác nhau trong bộ nhớ. Vì 'j' chỉ cùng một vị trí mỗi lần, tham chiếu đến' j' không phải là địa phương không gian. – brc
Bạn có thể vui lòng xây dựng các tham chiếu thuật ngữ được sử dụng hay không. Điều đó nghĩa là gì? –