Hiển thị kết quả từ 1 đến 7 / 7
  1. #1
    Tham gia
    06-05-2011
    Location
    nghệ an
    Bài viết
    80
    Like
    0
    Thanked 11 Times in 11 Posts

    Cần chú ý ! Mảng control trong c++

    Chào các anh em la một người mới nhập môi c++ nên có một số vấn đề về control trong c++ mà em không hiểu mong các anh gúp đỡ đó là:

    để truy nhập đến phần tử a[i][j] thông qua con trỏ p ta nên sử dụng cách viết sau:
    p = (float*)a;
    cin >> *(p+i*n+j) ; // nhập cho a[i][j]
    cout << *(p+i*n+j); // in a[i][j]
    hai dòng:
    cin >> *(p+i*n+j) ; // nhập cho a[i][j]
    cout << *(p+i*n+j); // in a[i][j]
    em không hiểu tại sao như vậy lại là nhập dữ liệu cho a[i][j]
    mong cac anh giai thích giùm em để vân đề được sáng tỏ
    em chân thành cảm ơn mọi người.
    thank you !
    Quote Quote

  2. #2
    Tham gia
    10-12-2004
    Location
    HCMC
    Bài viết
    2,121
    Like
    283
    Thanked 720 Times in 362 Posts
    bạn hiểu về con trỏ chưa? đã làm được nhập mảng 1 chiều bằng con trỏ chưa mà nhảy vô hỏi mảng 2 chiều?

  3. #3
    Tham gia
    15-03-2010
    Bài viết
    1,571
    Like
    84
    Thanked 1,573 Times in 861 Posts
    Bạn cắt ngang xương một phần của tài liệu khiến câu hỏi của bạn không đủ chi tiết:
    - tự dưng rồi a[i][j], a là cái gì?
    - n là cái gì?

    Muốn hiểu gì về con trỏ mảng thì vẽ cái mảng ấy ra giấy rồi dùng bút chì mò xem với các trị của chỉ số thì con trỏ chạy đến đâu.

  4. #4
    Tham gia
    06-05-2011
    Location
    nghệ an
    Bài viết
    80
    Like
    0
    Thanked 11 Times in 11 Posts
    mình đã tương đối hiểu về con trỏ rồi đã làm được nhập mảng 1 chiều bằng con trỏ rồi nhưng khi mò đến control và mảng hai chiều gặp phải vấn đề này thì gặp bế tắc

  5. #5
    Tham gia
    10-12-2004
    Location
    HCMC
    Bài viết
    2,121
    Like
    283
    Thanked 720 Times in 362 Posts
    hiểu con trỏ và mảng 1 chiều bằng con trỏ mà bế tắc ở mảng 2 chiều thì bạn chưa hiểu con trỏ. Cái bạn hiểu thật ra là chỉ tưởng là hiểu thôi.

  6. #6
    Tham gia
    15-03-2010
    Bài viết
    1,571
    Like
    84
    Thanked 1,573 Times in 861 Posts
    Đã nhắc cho cách tìm hiểu công thức liên hệ giữa n với i, j trong a. Cứ ở đấy mà hiểu con trỏ rồi...

  7. #7
    Tham gia
    02-08-2009
    Bài viết
    50
    Like
    0
    Thanked 3 Times in 3 Posts
    Mảng 2 chiều hay 10 chiều cũng thực chấc là mảng một chiều trong bộ nhớ, nếu bạn khai báo
    int a[5][6]; để dể hiểu gọi là a[x][y] tức tương đương mảng một chiếu a[5*6];
    nếu bạn viết a[3][2] = 0; vậy a[3][2] ở đâu? a[3][2] bằng a[2*6+3] hay nói đúng hơn bằng a[2*y+3];
    nếu bạn viết C++ và gán a[2*y+3] = a[3][2] thì máy sẻ báo lỏi, hay thử chương trình này:
    int a[5][6];
    for (int x = 0; x<5; x++) for(int y= 0; y<6; y++) a[x][y] = 5; // tất cả các phần tử trong a đếu là 5
    int *b= &a[0][0]; // con trỏ int b chỉ vào địa chỉ a[0][0];
    *b[2*6+3]=0; // gán giá trị 0 vào b[15] hay b[2*6+3] hay chính là a[3][2];
    kiểm tra a[3][2] bạn sẻ thấy nó bằng 0;
    Nói tóm gọn int a[5][6] được xấp xếp tuần tự như sau:
    {a[0][0], a[0][1], a[0][2], a[0][3], a[0][4], a[0][5],
    a[1][0], a[1][1], a[1][2], a[1][3], a[1][4], a[1][5],
    a[2][0], a[2][1], a[2][2], a[2][3], a[2][4], a[2][5],
    .... vâng vâng và vâng vâng .....
    chúc bạn thành công

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •