Mong mọi người giải thích giúp em tại sao ar[*p++] = 3
int ar[] = { 10,15,4,25,3,-4 }, *p, i;
p = &ar[2];
Mong mọi người giải thích giúp em tại sao ar[*p++] = 3
int ar[] = { 10,15,4,25,3,-4 }, *p, i;
p = &ar[2];
Khi m == 3, nếu ta gọi n = m++; thì n == 3, m == 4
p = &ar[2]; ⇨ *p == ar[2] == 4
ar[*p++] == ar[*p](với p ban đầu) == ar[4] == 3
Nói thêm: *p++ chính là *(p++) nên sau khi gọi phép tính này, p sẽ trỏ đến ar[3] hay *p == 25
Giải ra từ từ:
Ban đầu p là int* => *p là int, ar là int*. Về kiểu thì ổn.
p = ar + 2; Vậy *p là slot 2 bằng 4.*(ar + 4) là slot 4 bằng 3 rồi mới tăng p.p == ar + 3.Cám ơn a đã bớt thời gian để giải thích giúp em. Rất chi tiết và dễ hiểu ạ.
Thêm nữa là ở dòng code cuối cùng của anh, giá trị *p là 25 đúng ko a.
cám ơn a đã bớt chút thời gian để giải đáp giúp em. Em đã hiểu, cám ơn anh và cộng đồng nhiều
e chạy code ra giá trị 25 chứ ko phải 5 anh ạ.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?