01/10/2018, 08:19
Cần giải thích *(a+i) là gì
Ai chỉ dùm e cái *(a+i) là gì với ạ ? E thì e hiểu là giá trị tại địa chỉ (a + i). Nhưng lại chẳng hiểu a+i là gì nữa @@
Bài liên quan
Ai chỉ dùm e cái *(a+i) là gì với ạ ? E thì e hiểu là giá trị tại địa chỉ (a + i). Nhưng lại chẳng hiểu a+i là gì nữa @@
Đã “em hiểu” như thế này rồi “em lại chẳng hiểu” nữa @@ cuối cùng anh không hiểu là em không hiểu chỗ nào của nó luôn Nó chỉ là con trỏ thôi, con trỏ lấy giá trị tại địa chỉ a+i (đúng như cách em hiểu). Viết như vậy sẽ vắn tắt, dễ hiểu hơn là
int *p; p = a + i; printf("%d - ", *p);
(2 cách là tương đương nhưng cách sau lại tốn chỗ cho 1 biến và phức tạp hóa vấn đề hơn).E đang k hiểu chỗ (a + i ) đó ạ. bình thường k động vào con trỏ sẽ là a[0] hay a[i] gì đó. thì nó rõ ràng vị trí trong mảng r, giờ n cho ‘a’ , thì e biết nó là cái j ạ ? rồi còn lấy a+i mà i thì chạy từ 0. E đang xem nó cái video này mà khó hiểu quá, anh chỉ e cái
Làm mấy bài giời ơi kiểu này chỉ thêm phức tạp.
Cái kiểu con trỏ trong mảng là dành cho truy cập tuần tự (đọc chuỗi) ấy, mảng thì cứ
a[i]
mà giã chứ viết*(a+i)
chi cho cực. (bạn cứ nhớ &a[i] == a+i là được, mà cái dấu + này nó ko phải như bt, nếu bạn để ý printout)Cái này mình có trả lời hồi trưa với a là cái mảng thì a == &a thôi.
Printf (a+i) mà i++ thì như sau:
Thực chất là tăng biến con trỏ lên 1, mà biến con trỏ đó khởi tạo là biến lưu địa chỉ của phần tử đầu tiên của mảng, tăng 1 thì tự động nó trỏ đến phần tử tiếp theo của mảng
tùy theo kiểu dữ liệu của mảng mà giá trị của con trỏ sẽ tăng 1 lượng isizeof kiểu dữ liệu của mảng
Viết code rõ ràng ra xíu cho dễ hiểu