Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Giá trị của con trỏ mà in giá trị của con trỏ?

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    28

    Mặc định Giá trị của con trỏ mà in giá trị của con trỏ?

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. void main()
    5. {
    6. int m=2,n=100,p=20;
    7. int *pi=&n;
    8. clrscr();
    9. printf("m=%d  n=%d  p= %d \n",m,n,p);
    10. printf("&n=%p &m=%p &p=%p \n",&n,&m,&p);
    11. printf("pi= %p  pi+1=%p  pi-1=%p \n",pi,(pi+1),(pi-1));
    12. printf("*pi=%d  ",*pi);
    13. printf("*(pi+1)=%d  ",*(pi+1));
    14. printf("*(pi-1)=%d",*(pi-1));
    15. getch();
    16. }

    cái dòng
    printf("&n=%p &m=%p &p=%p \n",&n,&m,&p);
    nó in ra chữ và số lằng nhằng như &n=0012FF84. Em không hiểu sao nó ra như vậy, cái %p để mục đích gì.

    Kí tự & trước n ở đây dùng để làm gì vậy mà em thấy nó dùng trong hàm scanf ví dụ như scanf("%d",&a) để mình nhập giá trị . Nó có ý nghĩa gì vậy mà khi nhập giá trị vào cần có nó. còn dấu & trước n trong bài này để làm gì vậy.

    Cái *pi=100 hay thì em hiểu còn cái pi=0012FF84 thì lại chả hiểu gì cả.
    *pi là con trỏ vậy pi ở dòng
    printf("pi= %p pi+1=%p pi-1=%p \n",pi,(pi+1),(pi-1));
    là cái gì.

    Đọc Nội quy trước khi gửi bài viết. Đưa code vào tag code chứ không phải là tag quote. Chi tiết tại Nội quy của diễn đàn
    Đã được chỉnh sửa lần cuối bởi duc30121989 : 07-03-2008 lúc 10:07 AM. Lý do: Nhắc nhở hoài

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    24

    Tớ cũng mới làm quen với con trỏ thôi nhưng có lẽ lâu hơn cậu tí xíu nên có ý kiến sau:nếu sai xin các Pro-member chình sửa dùm:
    - thứ nhất biến con trỏ là biến lưu địa chỉ của các biến khác chứ ko lưu data.
    - Tại vì lưu địc chỉ nên giá trị của nó chính là dãy thập lục phân đó(đó chính là địa chỉ của biến mà nó trỏ tới);
    --thứ hai:trong con trỏ thì có 2 toán từ cơ bản là: *,&
    *:"nội dung được trỏ bởi"ví dụ:*p là nd dc trỏ bời p.
    &:"lấy địa chỉ của biến" ví dụ :p = &a là gán địa chỉ of a cho p.
    Đó bạn tự nghiên cứu tại sao khi printf (p) và printf(*p) lại khác nhau??
    Tại tui phải đi học nên chiều về phân tích các ví dụ cho bạn nhé..

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    28

    Thank. Mình cũng hiểu dần rồi.
    cái khó hiểu nhất của mình là
    &n=%p
    sao nó lại bằng 0012FF84, cái %p là chỉ cái gì.
    n=%d là lấy giá trị của biến n à, còn &n=%p là lấy địa chỉ của biến n hay sao.
    Đã được chỉnh sửa lần cuối bởi duc30121989 : 07-03-2008 lúc 10:14 AM.

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Dẹp mấy cái demo vớ vẩn này đi, cứ nhớ thế này :
    C++ Code:
    1. int *con_trỏ = &biến;
    -Thì khi xài trên con_trỏ tức là địa chỉ của biến
    -Còn *con_trỏ thì tức là biến đó. Dấu * đằng trước con trỏ tức là nói rằng, tau đang giữ tiền của ai tau trả lại cho thằng đó .
    Vậy thui, muốn thành thục con trỏ cơ bản thì làm chuỗi nhiều vào, xoá, thêm, cắt chuỗi, cố viết lại các hàm của C string là hiểu tuốt tuồn tuột. Cứ viết đi, có chỗ nào khó khăn thì post lên tui chỉ cho .

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    28

    Vậy thui, muốn thành thục con trỏ cơ bản thì làm chuỗi nhiều vào, xoá, thêm, cắt chuỗi, cố viết lại các hàm của C string là hiểu tuốt tuồn tuột. Cứ viết đi, có chỗ nào khó khăn thì post lên tui chỉ cho
    Vậy ông post lên vài bài thể loại này cho tui làm tí nào.Có gì không làm được thì post lên hỏi ông anh. Thanks trước.
    Đã được chỉnh sửa lần cuối bởi duc30121989 : 07-03-2008 lúc 03:14 PM.

  6. #6
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mặc định Giá trị của con trỏ mà in giá trị của con trỏ?

    -Viết 1 hàm trả về nhận vào 1 chuỗi kiểu char*, chỉnh sữa gì đó, rùi trả về 1 chuỗi mới kiểu char* !
    -Viết 1 hàm xoá 1 chuỗi tại 1 vị trí nào đó.
    -Viết 1 hàm copy 2 chuõi.
    -Viết 1 hàm insert 1 kí tự vào chuỗi.
    Rùi làm hết đi cậu !

  7. #7
    Ngày gia nhập
    12 2007
    Bài viết
    7

    Viết printf("*pi = %d",*pi) nghĩa là viết ra chuỗi *pi =, sau đó viết tiếp vào chỗ %d giá trị của vùng nhớ được trỏ bởi pi, và giá trị này viết ra dưới dạng số nguyên.

  8. #8
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Thank. Mình cũng hiểu dần rồi.
    cái khó hiểu nhất của mình là
    &n=%p
    sao nó lại bằng 0012FF84, cái %p là chỉ cái gì.
    n=%d là lấy giá trị của biến n à, còn &n=%p là lấy địa chỉ của biến n hay sao
    mình nghĩ bạn nên học lại phần nhập kí tự bằng hàm scanf nhé,trong sách lập trình c của phạm văn ất đầy đủ lắm,tất cả những điều bạn hỏi đều là cơ bản cả,nếu có sách phạm văn ất thì mở trang 69-70 đi nhé,chúc bạn học tốt

  9. #9
    Ngày gia nhập
    02 2008
    Bài viết
    28

    Sau phát này mình phải mua sách của Phạm Văn Ất ngay. Sách mình đang dùng của Nguyễn Thanh Thủy cô đọng quá.
    Đã được chỉnh sửa lần cuối bởi duc30121989 : 09-03-2008 lúc 10:14 PM.

  10. #10
    Ngày gia nhập
    02 2008
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi duc30121989 Xem bài viết
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. void main()
    5. {
    6. int m=2,n=100,p=20;
    7. int *pi=&n;
    8.  
    9. }

    cái dòng
    printf("&n=%p &m=%p &p=%p \n",&n,&m,&p);
    nó in ra chữ và số lằng nhằng như &n=0012FF84. Em không hiểu sao nó ra như vậy, cái %p để mục đích gì.

    [/B][/COLOR]
    Lâu wa tớ cũng wen rùi nhưng cậu cứ theo Rõ hay Gate đi, sẽ hiểu kĩ hơn, tớ cũng phải thế thôi. Nhưng tớ biết rằng biến con trỏ thì nó chỉ trỏ tới đâu đó. hihihihi Tớ có cái demo này, cậu xem mà không cần chạy chương trình mà bít nó sai chỗ nào thì cậu sẽ hỉu.
    C Code:
    1. {
    2. int *p,*q,a,b
    3. a=5;
    4. p=q;
    5. q=&a;
    6. b=*p+*q;
    7. printf("%d",b);
    8. }

    nó sẽ báo lỗi đó. hihihi

    Vui lòng để code vào tag code. Đọc Nội quy để biết thêm chi tiết!
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 12-03-2008 lúc 12:55 PM. Lý do: Nhắc nhở về đưa code vào tag

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn