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

Поділитися
Вставка
  • Опубліковано 29 січ 2025

КОМЕНТАРІ • 89

  • @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

  • @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

  • @long3850
    @long3850 4 роки тому +1

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

    •  4 роки тому

      oke nhé

  • @haovu2763
    @haovu2763 Рік тому

    anh này dạy hay vl thề

  • @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ỏ ạ

  • @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

  • @lakemk
    @lakemk Рік тому

    for (; ptr

  • @NAMNGUYEN-gc1zh
    @NAMNGUYEN-gc1zh 6 років тому +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 ) ạ

    •  6 років тому +1

      Ctrl /

  • @hoanle2320
    @hoanle2320 2 роки тому +1

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

    •  2 роки тому

      Đúng r e

  • @dungvothe7173
    @dungvothe7173 6 років тому

    em cảm ơn anh

  • @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 /

  • @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ớ

  • @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

  • @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

  • @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

  • @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 ạ

  • @NgyenucKhaiHE
    @NgyenucKhaiHE 4 роки тому

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

    •  4 роки тому +1

      ua-cam.com/video/welAtSfiyok/v-deo.html

  • @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

  • @_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 ???

  • @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

  • @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

  • @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]);!!!

  • @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

  • @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

  • @it4.080
    @it4.080 5 років тому

    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

    •  5 років тому

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

    • @it4.080
      @it4.080 5 років тому

      @ 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

    •  5 років тому

      @@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 5 років тому

      vâng em cảm ơn anh

    •  5 років тому

      @@it4.080 oke

  • @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ì

  • @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?

  • @thaihungnguyen6738
    @thaihungnguyen6738 7 років тому

    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 ạ

    •  7 років тому

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

  • @dungvothe7173
    @dungvothe7173 6 років тому +1

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

    •  6 років тому

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

  • @gymngocson6480
    @gymngocson6480 5 років тому

    Int 2 byte mà anh?

    •  5 років тому

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

    • @Quangnguyen1696
      @Quangnguyen1696 4 роки тому

      32 bit thì 2 byte, 64 bit 4 byte

  • @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

  • @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.

  • @top_1_florentino
    @top_1_florentino 5 років тому

    Hello

  • @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ỏ

  • @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

  • @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