Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Kiểu địa chỉ của mảng 2 chiều.

    Trả lời giúp mình mấy câu hỏi dưới nha[IMG]images/smilies/biggrin.png[/IMG], nếu thấy có thể giải thích thêm thì các bạn cứ giải thích[IMG]images/smilies/biggrin.png[/IMG].
    Giả sử mình có một mảng 2 chiều là:

    Mã:
    int a[3][4]
    thì kiểu địa chỉ của a là?, có phải là:

    Mã:
    int (*p)[3][4]
    không nhỉ?!.
    kiểu địa chỉ của a[2] là?, có phải là:

    Mã:
    int (*p)[4]
    không nhỉ?!
    kiểu địa chỉ của a[2][3] có phải là:

    Mã:
    int *p
    không nhỉ?!
    Và kiểu địa chỉ có phải là kiểu dùng để lưu địa chỉ của biến?

  2. #2
    Bạn có thể coi như * và [] tương đương nhau. Khi hạ cấp con trỏ xuống thì bỏ bớt 1 * hoặc 1 []. Nếu đã bỏ 1 [] mà lại thêm * vô như ví dụ của bạn thì hoàn toàn huề vốn. Con trỏ bao nhiêu chiều là bấy nhiêu dấu * hoặc bấy nhiêu dấu []. Như vậy trong trường hợp này thì int **p sẽ tương đương int a[3][4]. Mình nói tương đương chứ ko nói giống nhau hoàn toàn, vì nó vẫn khác nhau về cách tổ chức dữ liệu trên bộ nhớ. Khi hạ bậc con trỏ xuống thì còn int *p hoặc a[4].

  3. #3
    Trích dẫn Gửi bởi meoconlongvang
    Bạn có thể coi như * và [] tương đương nhau. Khi hạ cấp con trỏ xuống thì bỏ bớt 1 * hoặc 1 []. Nếu đã bỏ 1 [] mà lại thêm * vô như ví dụ của bạn thì hoàn toàn huề vốn. Con trỏ bao nhiêu chiều là bấy nhiêu dấu * hoặc bấy nhiêu dấu []. Như vậy trong trường hợp này thì int **p sẽ tương đương int a[3][4]. Mình nói tương đương chứ ko nói giống nhau hoàn toàn, vì nó vẫn khác nhau về cách tổ chức dữ liệu trên bộ nhớ. Khi hạ bậc con trỏ xuống thì còn int *p hoặc a[4].
    Mình vẫn không hiểu?!, nhưng kiểu địa chỉ là gì?!, có phải như mình định nghĩa không?, bạn có thể giải thích giúp mình?!,

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Ngay chỗ bạn tô màu đỏ mình đã ghi khai báo tương đương rồi còn gì. Bạn đọc lại đi.


    int **p tương đương int a[3][4]
    hoặc:


    int *p[3] tương đương int a[3][4]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •