Tại sao khi gán cho p=&c thì giá trị của *(p+1) lại là giá trị của *p lúc đầu

Cái này mình hỏi chắc hơi lang mang 1 xíu nhưng mình mún hiểu rõ tại sao nó lại chư vậy. Ai giúp đc mình xin cám ơn
Code mình thế này

    int main(){
        int (*p)[10];
        int a[10]={1,2,3,4,5,6,7,8,9,10};
        int c[10]={11,23,45,64,1,3,4,5,6,7,8};
        p=&a;
        p=&c;
        system("pause");
    }

Mình thắc mắc là tại sao khi gắn cho p=&c; thì xem giá trị của *(p+1) lại là giá trị của *p lúc đầu.
Cái này có phải là cơ chế stack hay ko, hay là do IDE nó thế.
Xin cám ơn, như hình!

Chào nospk!
Bạn tìm hiểu về con trỏ mảng và mảng con trỏ bạn sẽ hiểu! Chúc bạn thành công!

1 Like

Mình đang tìm hiểu về nó, cơ bản thì mình hiểu rồi, nhưng còn phần này mình ko thấy chỗ nào có ghi, bạn có tài liệu nào về phần này có thể gửi cho minh ko. Tiếng anh cũng đc chịu khó đọc dịch 1 tí :smiley:

Chào nospk!
bạn cho mình mail đi mình gửi qua!

[email protected]
À mình hiểu sơ sơ rồi, hình như CodeBlock nó cấp phát Address từ cao xuống thấp, nên khi mình +1, nó ra địa chỉ thấp hơn mà lại trùng với a nên mình mới thắc mắc. Thanks bạn nhá.

5 posts were split to a new topic: Làm sao để hiển thị thông báo vòng lặp trên VS2010

1 Like

… Mình cũng chung câu hỏi như bạn

Khi watch mình chỉ cần add tên biến vào, khi nó thay đổi thì giá trị hiển thị cũng thay đổi mà. Bạn phải debug từng bước

Bạn tìm sizeof(*p) là hiểu ngay.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?