C - Bài 28: Con trỏ và mảng.

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 ธ.ค. 2024

ความคิดเห็น • 89

  • @bluesthe1760
    @bluesthe1760 5 ปีที่แล้ว +1

    chỉ dẫn rất hay, lời rõ, đẹp, cám ơn bạn rất nhiều

    •  5 ปีที่แล้ว

      thanks

  • @thanhtranndang
    @thanhtranndang ปีที่แล้ว +1

    int arr[] = { 1,2,3,4,5 };
    int* ptr = arr;
    int i;
    for (ptr = arr; ptr < arr + 5; ptr++ )
    {
    printf("%d ", *(ptr));
    }
    Em tham khảo 1 số video khác thì có thể làm theo cách này ạ
    ptr khởi tạo với giá trị ban đầu là địa chỉ của phần tử đầu tiên của mảng arr, và ptr sẽ chay khi giá trị của ptr vẫn nhỏ hơn địa chỉ cuối cùng của mảng arr

  • @haovu2763
    @haovu2763 ปีที่แล้ว

    anh này dạy hay vl thề

  • @long3850
    @long3850 4 ปีที่แล้ว +1

    bài này hiểu hơn hẳn rồi a ạ :D

    •  4 ปีที่แล้ว

      oke nhé

  • @24.nguyenhuytan90
    @24.nguyenhuytan90 3 ปีที่แล้ว +1

    2:21 sao đoạn khởi tạo như clip trc thì phải khai báo là int *ptr = &arr. Sao bh lại không có dấu ''và'' nữa vậy a?

    •  3 ปีที่แล้ว +2

      Do mảng bản chất là con trỏ nên e k có & trước arr

  • @namtranquang955
    @namtranquang955 5 ปีที่แล้ว +2

    5:29 em thắc mắc là ko cần const cho ptr hả a? hay mỗi vòng for như vậy giá trị nó ko thay đổi vì nó là con trỏ ạ

  • @NAMNGUYEN-gc1zh
    @NAMNGUYEN-gc1zh 5 ปีที่แล้ว +1

    Anh cho em hỏi là bôi đen sau bấm cái gì để toàn bộ phần bôi đen trở thành chú thích ( comment ) ạ

    •  5 ปีที่แล้ว +1

      Ctrl /

  • @tonngokhong8243
    @tonngokhong8243 6 ปีที่แล้ว +2

    a ơi phút 6:08 a ấn kiểu gì mà nó ra 3 cái dòng đó có 2 gạch ở đầu v ạ

    •  6 ปีที่แล้ว

      ROS Việt Ctrl /

  • @hoanle2320
    @hoanle2320 2 ปีที่แล้ว +1

    mỗi máy thì địa chỉ có thể khác nhau hay sao ạ

    •  2 ปีที่แล้ว

      Đúng r e

  • @buithanhlam3726
    @buithanhlam3726 5 ปีที่แล้ว +2

    Anh ơi, theo em được biết thì địa chỉ của các phần tử trong mảng cách nhau 1 khoảng đúng bằng kích thước của kiểu dữ liệu đó, như trong video thì các địa chỉ của a[0], a[1]... cách nhau 4 đơn vị. Vậy sao *(ptr+i) vẫn đúng ạ, em tưởng là *(ptr+i*sizeof(int)) chứ ạ? Cảm ơn anh.

    •  5 ปีที่แล้ว

      mặc đinh nó coi ptr + i trong đó ptr là con trỏ thì kết quả sẽ trỏ tới vị trí các ptr cũ i ô nhớ

  • @dungvothe7173
    @dungvothe7173 6 ปีที่แล้ว

    em cảm ơn anh

  • @learningisfun5353
    @learningisfun5353 4 ปีที่แล้ว

    anh ơi anh làm thế nào để bôi đen rồi bấm cái là nó ra một loạt các dấu // vậy ạ

    •  4 ปีที่แล้ว

      Trần Ngọc Dự ctrl space

    • @learningisfun5353
      @learningisfun5353 4 ปีที่แล้ว

      @ thanks anh

  • @lakemk
    @lakemk 11 หลายเดือนก่อน

    for (; ptr

  • @aitruong7468
    @aitruong7468 3 ปีที่แล้ว

    anh ơi cho em hỏi nếu em học hết C rồi học kháo cấu trúc dữ liệu và giải thuật rồi em sẽ học những gì tiếp theo ạ

    • @aitruong7468
      @aitruong7468 3 ปีที่แล้ว

      em muốn theo hướng AI a ạ:V

  • @maithivan5878
    @maithivan5878 5 ปีที่แล้ว +1

    Đề bài là viết các hàm:
    -nhập x, kiểm tra trong mảng có phần tử nào bằng x thì gán bằng 0
    -nhập k, xóa phần tử ở vị trí thứ k trong mảng.
    Em hỏi là làm sao để hàm xoa_mang() của em xoá mảng ban đầu em nhập.
    Vì em chạy hàm ktra_mang() trước nên nó lấy luôn cái mảng sau khi sửa đấy để xóa,em muốn lấy cái mảng ban đầu nhập để xóa ý.
    GIÚP E VỚI,EM CẢM ƠN NHIỀU Ạ
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #include
    #include
    int nhapN(){
    int n;
    do{
    printf("nhap n=");
    scanf("%d",&n);
    if(n30){
    printf("nhap sai, nhap lai n=");
    scanf("%d",&n);
    }
    }while(n30);
    return n;
    }
    void nhapmangB(int B[],int n){
    for(int i=0;i

  • @_LeMinhQuy-mf7hb
    @_LeMinhQuy-mf7hb 4 ปีที่แล้ว

    cho mk hỏi là khi chạy chương trình thì sao arr = &arr z ad???

    •  4 ปีที่แล้ว

      bản chất của mảng là con trỏ nên nó cho phép như vậy nhé

    • @_LeMinhQuy-mf7hb
      @_LeMinhQuy-mf7hb 4 ปีที่แล้ว

      @ ad giải thích rõ hơn đc ko ???

  • @khoanguyentranang1298
    @khoanguyentranang1298 4 ปีที่แล้ว

    Anh triệu ơi , anh cho em hỏi dòng 20 tại sao mình *ptr mà còn + i làm gì vậy anh, em hông hiểu mong anh giải thich giúp em , em cảm ơn a trc ạ

    •  4 ปีที่แล้ว

      Khoa Nguyễn Trần Đăng nội dung này đang nói về con trỏ và mảng mà

    • @QuocAn-gg5zg
      @QuocAn-gg5zg 4 ปีที่แล้ว +3

      Không biết ông còn cần không nhưng theo tôi hiểu thì đó là vì ông cần in ra giá trị ở những ô nhớ kế tiếp, phần ptr + i sẽ làm địa chỉ lấy giá trị tăng lên còn dấu * ở ngoài là để lấy giá trị của ô nhớ đó, vì suốt vòng lặp chỉ có giá trị của i là tăng lên còn của ptr thì không thay đổi nên nó sẽ cho ra kết quả đúng

  • @duyta1677
    @duyta1677 4 ปีที่แล้ว

    anh cho e hỏi tại sao lúc gán giá trị cho %x trong câu lệnh printf lúc thì anh dùng dấu "&" cho giá trị gán lúc thì lại không thế ạ

    • @danhdaidao4721
      @danhdaidao4721 2 ปีที่แล้ว

      Đối với con trỏ và mảng thì không cần dùng dâu & vì giá trị đã được lưu vào địa chỉ của con trỏ hoặc của mảng. Bạn dùng & trước mảng khi mảng đó khai báo giá trị phần tử riêng lẻ trong mảng. VD: bạn có 1 mảng 10 phần tử (arry[10]) khi bạn cần khai báo phần tử thứ 5 arry[5] của mảng 10 phần tử thì bạn sẽ để dấu & trước mảng này: scanf("%d",&arrayy[5]);!!!

  • @it4.080
    @it4.080 4 ปีที่แล้ว

    anh ơi đổi kiểu phần tử char a[i] of array sang kiểu int ntn ạ
    em dùng con trỏ đến lúc đổi nó ko chạy

    •  4 ปีที่แล้ว

      int number = arr[i] - '0';

    • @it4.080
      @it4.080 4 ปีที่แล้ว

      @ mấy điều này trên trường thây cô ko dạy nhỉ chủ yêu đọc tài liệu à anh

    •  4 ปีที่แล้ว

      @@it4.080 không phải mọi thứ e đều có thể học ở trường. Hãy chịu khó google có hết các câu trả lời

    • @it4.080
      @it4.080 4 ปีที่แล้ว

      vâng em cảm ơn anh

    •  4 ปีที่แล้ว

      @@it4.080 oke

  • @nguyenthanhnam9813
    @nguyenthanhnam9813 4 ปีที่แล้ว

    liệu có ép kiểu dữ liệu cho con trỏ đc không ạ ?

    •  4 ปีที่แล้ว

      có, e tìm hiểu con trỏ void

  • @thaihungnguyen6738
    @thaihungnguyen6738 6 ปีที่แล้ว

    Anh cho em hỏi, anh có tài liệu chi tiết về phần con trỏ và mảng(những cách truy xuất mảng 1 và 2 chiều sử dụng con trỏ theo những cách chuẩn nhất) không ạ? cho em xin với, em tham khảo nhiều blogs, mỗi chổ làm 1 khác nên giờ hơi rối ạ

    •  6 ปีที่แล้ว

      Thai Hung Nguyen a chỉ có tài liệu tiếng Anh thôi

  • @NgyenucKhaiHE
    @NgyenucKhaiHE 4 ปีที่แล้ว

    Cho em hỏi %5d có tác dụng gì ạ

    •  4 ปีที่แล้ว +1

      th-cam.com/video/welAtSfiyok/w-d-xo.html

  • @laitranthevinh
    @laitranthevinh 3 ปีที่แล้ว

    Vì sao khi scanf();một mảng kí tự nào đó ta lại không cần kí tự &trước tên biến vậy mọi người?

    •  3 ปีที่แล้ว

      Vì tên mảng là con trỏ nhé e

    • @laitranthevinh
      @laitranthevinh 3 ปีที่แล้ว

      @ vì sao con trỏ lại không có & vậy thầy?

    •  3 ปีที่แล้ว

      Vì bản thân con trỏ chứa địa chỉ rồi e

    • @laitranthevinh
      @laitranthevinh 3 ปีที่แล้ว

      À vâng, thầy làm mấy cái hàm memchr();. . . trong thư viện string.h đi. Em xem trên mạng chả hiểu người ta nói gì

  • @boquangdong
    @boquangdong 6 ปีที่แล้ว

    Anh giải thích cho em cái %x đi ạ. Đoạn ở 2:04 á

    •  6 ปีที่แล้ว +1

      %x là hiển thị địa chỉ dạng hệ cơ số 16

  • @trinhong1893
    @trinhong1893 3 ปีที่แล้ว

    Con trỏ khó nhất trong ngôn ngữ C đúng ko a

  • @oanovan9199
    @oanovan9199 ปีที่แล้ว

    muốn học khóa học thì kiểu gì ạ

    •  ปีที่แล้ว

      E vào trang https:braniumacademy.net xem nhé

    • @oanovan9199
      @oanovan9199 ปีที่แล้ว

      @ anh ơi ko có bài tập ạ
      em thấy có lý thuyết thôi ạ

  • @comvn8085
    @comvn8085 6 ปีที่แล้ว +1

    sao em bam ctll +? lai k boi dc a nhi

    •  6 ปีที่แล้ว

      cụ thể e định làm cái gì? e phải chọn vùng code muốn comment sau đó thao tác trên mới có tác dụng

    • @comvn8085
      @comvn8085 6 ปีที่แล้ว

      Ý e là làm nhưa vậy nhưng thao tác k dc noa ra moi 1 gạch

  • @dungvothe7173
    @dungvothe7173 6 ปีที่แล้ว

    cho em hỏi ơ vuông ở câu 5 chỗ nào ạ em cảm ơn

    •  6 ปีที่แล้ว

      Dũng Võ Thế cụ thể đi b?

  • @tranquocbao4056
    @tranquocbao4056 3 ปีที่แล้ว

    sao thầy mình dạy con trỏ là %p nhỉ?

    •  3 ปีที่แล้ว

      %p, %x đều ok. chi tiết tham khảo ví dụ: www.tutorialspoint.com/difference-between-p-and-x-in-c-cplusplus

  • @tradingfomosapien3651
    @tradingfomosapien3651 7 ปีที่แล้ว

    anh ơi anh có thể làm thêm video về phần cấp phát bộ nhớ động được không ạ .. em chưa hiểu chỗ đó lắm
    cảm ơn anh nhiều... bài giảng anh rất tuyệt

    •  7 ปีที่แล้ว

      huynh viet phải cuối tháng a mới làm được. Hiện a đang phải tạm dừng update

    • @tradingfomosapien3651
      @tradingfomosapien3651 7 ปีที่แล้ว

      ok anh... chúc anh thành công và cho nhiều video hay hơn nữa nhé

    •  7 ปีที่แล้ว

      huynh viet ok e

  • @hoangminhtuan4355
    @hoangminhtuan4355 4 ปีที่แล้ว

    ptr++ là chuyển ô nhớ này qua ô nhớ liền kề
    ptr++ = ptr +(1*4)
    Thì có nghĩa là 2 đại chỉa liên tiếp cách nhau 4 byte đúng k anh :))

    •  4 ปีที่แล้ว

      Đúng vậy

    • @thangduong7179
      @thangduong7179 3 ปีที่แล้ว

      @ tại sao chương trình lại dịch ++ thành +4 ạ? Hay nó là con trỏ nên chương trình tự hiểu vậy a?

    •  3 ปีที่แล้ว

      @@thangduong7179 mặc định ++ sẽ cộng thêm 1 lượng bằng độ lớn của kiểu dữ liệu của con trỏ

  • @dungvothe7173
    @dungvothe7173 6 ปีที่แล้ว +1

    Dạ em không biết chỗ nào ạ

    •  6 ปีที่แล้ว

      Dũng Võ Thế cạnh phím P

  • @top_1_florentino
    @top_1_florentino 5 ปีที่แล้ว

    Hello

  • @gymngocson6480
    @gymngocson6480 4 ปีที่แล้ว

    Int 2 byte mà anh?

    •  4 ปีที่แล้ว

      tùy hệ điều hành nhé e

    • @Quangnguyen1696
      @Quangnguyen1696 4 ปีที่แล้ว

      32 bit thì 2 byte, 64 bit 4 byte

  • @thulu8562
    @thulu8562 7 ปีที่แล้ว

    A ơi cho e tại sao lúc in địa chỉ %x lại để ptr mà lúc in giá trị %5d lại để *ptr ạ? Có gì khá nhau ạ?

    •  7 ปีที่แล้ว +2

      theo định nghĩa thì con trỏ là biến mà giá trị chứa trong nó là địa chỉ của biến khác. in cái địa chỉ của biến mà nó chứa thì chỉ cần ptr, còn chui vào địa chỉ đấy(nói cách khác là tìm tới tận chỗ của biến mà con trỏ trỏ tới ) để tìm giá trị thực sự tồn tại/ chứa trong biến đó thì phải dùng *ptr

    • @thulu8562
      @thulu8562 7 ปีที่แล้ว

      +thân triệu e cảm ơn ạ!

  • @ngaxu8141
    @ngaxu8141 7 ปีที่แล้ว

    anh ơi cho em hỏi: *p++ trong chương trình ví dụ kia có ý nghĩa gì ạ?
    em cảm ơn!
    #include
    #include
    void main()
    {
    int a = 6;
    int *p = &a;
    for (; *p < 15; *p++){
    printf("%3d", *p);
    }
    _getch();
    }

    •  7 ปีที่แล้ว

      Dung Van tăng giá trị tại vị trí chứa trong con trỏ lên 1

    • @ngaxu8141
      @ngaxu8141 7 ปีที่แล้ว

      thân triệu em cảm ơn

  • @dungvothe7173
    @dungvothe7173 6 ปีที่แล้ว

    ô vuông trước dấu bằng dòng 5 ạ

    •  6 ปีที่แล้ว

      Dũng Võ Thế nó trên bàn phím ấy e.

  • @songchovui1905
    @songchovui1905 4 ปีที่แล้ว

    %x là gì vậy ạ

    •  4 ปีที่แล้ว

      mew con in giá trị hệ 16

    • @songchovui1905
      @songchovui1905 4 ปีที่แล้ว

      @ anh đi làm về trễ hay sao giờ này rep ạ?

    •  4 ปีที่แล้ว

      Khi nào rảnh a rep