01/10/2018, 11:51

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!

nghia viết 13:55 ngày 01/10/2018

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!

hoang viết 14:05 ngày 01/10/2018

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í

nghia viết 14:02 ngày 01/10/2018

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

hoang viết 14:00 ngày 01/10/2018

nospk1706@gmail.com
À 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á.

*grab popcorn* viết 13:51 ngày 01/10/2018

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

Nguyễn Bá Chiến viết 13:55 ngày 01/10/2018

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

hoang viết 13:51 ngày 01/10/2018

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

rogp10 viết 13:55 ngày 01/10/2018

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

Bài liên quan
0