01/10/2018, 08:25

Con trỏ trong ngôn ngữ C

#include <stdio.h>
#include <stdlib.h>

int *p;

int main() {
    int a = 3;
    int b = 8; 

	p = &b;

    printf("a = %ld" , /*Fill in here */);
    printf("b = %ld" ,(long)(*p));

	return 0;
}

Đề yêu cầu chỉ sử dụng con trỏ p để truy cập địa chỉ của a , b . Điền vào 2 chỗ để in giá trị của a và b mà em chỉ in ra được b . a và b có mối liên kết gì không ạ , anh chị nào biết giúp em với , em cảm ợn !

... viết 10:33 ngày 01/10/2018

p = &b;

Sau phép gán này, bạn có thể hiểu p bây giờ là &b, và bên dưới bạn in ra giá trị của b bằng cách

(*p)

thì cũng tương đương (*(&b))

Bạn có thể làm tương tự cho biến còn lại mà ko cần dùng đến con trỏ p.

Tao Không Ngu. viết 10:30 ngày 01/10/2018

Không chính thức thì p-- la địa chỉ của a.

Khang Việt viết 10:32 ngày 01/10/2018

Vậy chỗ kia mình có thể điền (*(&a)) Nhưng mà đề Yêu cầu: "chỉ được phép sử dụng con trỏ ‘p’ để truy cập nội dung ô nhớ của ‘a’ và ‘b’. " nên em nghĩ điền vào 2 chỗ trống kia phải thông qua con trỏ p anh !

Khang Việt viết 10:36 ngày 01/10/2018

cài này mình chưa hiểu lắm , bạn có thể nói rõ hơn được không ?

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

Lưu ý là không có gì đảm bảo a và b nằm kế nhau à.

Khang Việt viết 10:35 ngày 01/10/2018

mình biết , nên mình không biết làm sao để in ra a , vì khi mà dùng con trỏ p trỏ đến a thì tới khi printf("b = %ld\n", (long)(*p) ); nó sẽ không in ra giá trị b nữa .

Tao Không Ngu. viết 10:41 ngày 01/10/2018

Cấp phát trên stack thì khả năng cao là liên tiếp. Mình đã thử và OK. Đang tìm tài liệu liên quan.
Nếu bạn có tài liệu CM nó là sai thì có thể chia sẻ. @_@! Cảm ơn.

Bài liên quan
0