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!
Bài liên quan
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!
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í
Chào nospk!
bạn cho mình mail đi mình gửi qua!
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á.
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
… 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.