Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 30 kết quả

Đề tài: Con trỏ trong C dùng để làm gì?

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

    Exclamation Con trỏ trong C dùng để làm gì?

    Mình mới học C thôi. Biến con trỏ dùng để làm gì? Khi mà các bài tập mình làm chỉ dùng để thay thế biến mảng?!
    Thêm một biến chỉ tốn thêm bộ nhớ!
    Có bài tập dạng nào mà chỉ biến con trỏ làm được thôi không?

    ----------
    Post bài không đúng box. Vào box "hỏi đáp" nêu thắc mắc hay hỏi vấn đề nào đó. ht961711
    Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 30-11-2007 lúc 01:25 PM.
    offline as always

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

    mình không rành lắm nhưng nó có 1 mục đích là tiết kiệm bộ nhớ, ví dụ tưởng tượng bộ nhớ là 1 hình chữ nhật nhiều ô, khi không dùng con trỏ thì cấp phát mảng cần số ô nhớ liên tục, con dùng con trỏ thì không cần liên tục
    Đã được chỉnh sửa lần cuối bởi BuithiHa : 01-12-2007 lúc 08:21 PM.

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Biến con trỏ nó sử dụng với mục đích để trỏ tới địa chỉ một vùng nhớ nào đó.
    Với biến thông thường khi khai báo nó sẽ chỉ định một vùng nhớ đủ để lưu trữ và vùng nhớ này là cố định từ khi biến đó được sử dụng đến khi kết thúc việc sử dụng.
    Khác với biến thông thường thì biến con trỏ là biến nắm giữ một địa chỉ của một vùng nhớ nào đó, nó trỏ tới vùng nhớ đó khi cần xử lý. Biến con trỏ nó có thể có hoặc không trỏ cố định tới một vùng nhớ cụ thể. Do đó biến con trỏ thường dùng để cấp phát bộ nhớ động, hoặc các công tác có truy vấn tới vùng nhớ ở cấp địa chỉ của bộ nhớ.

    Về biến con trỏ thực sự không có gì là khó hiểu, nhưng ứng dụng của nó thì rất nhiều và nó là một trong biến để xử lý bộ nhớ khá mạnh mẽ mà chỉ có ở C/C++ và một vài ngôn ngữ khác. Nếu muốn tìm hiểu kỹ hơn, bạn hãy đọc thêm về phần con trỏ trong các tài liệu về C/C++.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

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

    Trích dẫn Nguyên bản được gửi bởi Dreaminess Xem bài viết
    Biến con trỏ nó sử dụng với mục đích để trỏ tới địa chỉ một vùng nhớ nào đó.
    Với biến thông thường khi khai báo nó sẽ chỉ định một vùng nhớ đủ để lưu trữ và vùng nhớ này là cố định từ khi biến đó được sử dụng đến khi kết thúc việc sử dụng.
    Khác với biến thông thường thì biến con trỏ là biến nắm giữ một địa chỉ của một vùng nhớ nào đó, nó trỏ tới vùng nhớ đó khi cần xử lý. Biến con trỏ nó có thể có hoặc không trỏ cố định tới một vùng nhớ cụ thể. Do đó biến con trỏ thường dùng để cấp phát bộ nhớ động, hoặc các công tác có truy vấn tới vùng nhớ ở cấp địa chỉ của bộ nhớ.

    Về biến con trỏ thực sự không có gì là khó hiểu, nhưng ứng dụng của nó thì rất nhiều và nó là một trong biến để xử lý bộ nhớ khá mạnh mẽ mà chỉ có ở C/C++ và một vài ngôn ngữ khác. Nếu muốn tìm hiểu kỹ hơn, bạn hãy đọc thêm về phần con trỏ trong các tài liệu về C/C++.
    Cám ơn nhé

    Trích dẫn Nguyên bản được gửi bởi BuithiHa Xem bài viết
    mình không rành lắm nhưng nó có 1 mục đích là tiết kiệm bộ nhớ, ví dụ tưởng tượng bộ nhớ là 1 hình chữ nhật nhiều ô, khi không dùng con trỏ thì cấp phát mảng cần số ô nhớ liên tục, con dùng con trỏ thì không cần liên tục
    Vậy tức là không khai báo mảng vẫn có thể dùng con trỏ, đúng không
    Vậy gán trị sao nhỉ
    Mơi học con trỏ hà, chưa có bài tập nào chuyên sâu
    offline as always

  5. #5
    Ngày gia nhập
    11 2007
    Bài viết
    4

    Vậy tức là không khai báo mảng vẫn có thể dùng con trỏ, đúng không
    Vậy gán trị sao nhỉ
    Mơi học con trỏ hà, chưa có bài tập nào chuyên sâu
    Việc gán giá trị hay lấy giá trị của ô nhớ mà con trỏ trỏ tới là quy cách sử dụng mà mỗi ngôn ngữ định nghĩa riêng thôi. Tôi lấy ví dụ:
    trong C, khi khai báo : int *a;
    a là con trỏ, *a là nội dung trong nó,
    int a;
    &a là toán tử cho phép lấy địa chỉ ô nhớ của biến a.
    trong PASCAL: khai báo con tro:
    integer ^a;
    a là con trỏ, và ^a là giá trị của nó.
    PS: trong các giáo trình về C/C++ nói cũng rõ ràng lắm bạn à.

  6. #6
    Ngày gia nhập
    12 2007
    Nơi ở
    hồ chí minh
    Bài viết
    13

    Mặc định Con trỏ trong C dùng để làm gì?

    thay vì khai báo : int p[10] khai báo tĩnh=> thì trong bộ nhớ sẽ tạo tĩnh 10 vùng nhớ ta có thể khai báo động bằng biến con trỏ : int*p = new int[10];lúc này p chỉ là một con trỏ ,trỏ tới vùng nhớ mới được tạo ra và đây là vùng nhớ được cấp phát động do đó khi ta dùng xong dữ liệu của vùng nhớ này ta có thể delete data ở vùng nhớ này đi và có thể dùng lại nó để lưu data khác
    delete int[10];
    Tất cả những gì không thể mua được bằng tiền thì đều có thể mua được bằng rất nhiều tiền

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

    Do tính linh động của mình, con trỏ thường được dùng để can thiệp trực tiếp vào bộ nhớ. Sau khi học về hàm, bạn sẽ hiểu tầm quan trọng của con trỏ

  8. #8
    Ngày gia nhập
    11 2007
    Bài viết
    4

    Mọi dữ liệu mà chương trình truy cập, sử dụng để thông qua con trỏ, việc thực hiện lời gọi hàm hay truy xuất sữ liệu cũng vậy. Ở mức mã máy, con trỏ lệnh sẽ trỏ đến địa chỉ của khối dữ liệu hay địa chỉ của một hàm (con trỏ hàm). Vì vậy khi biết được địa chỉ của dữ liệu hay của một hàm (chính là con trỏ), bạn có thể thao tác trực tiếp, mà không cần thông qua tên biến.

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

    Cám ơn nhiều vì đã giải đáp nha ^^
    Phải nghiên cứu thêm nhiều rồi ^^
    offline as always

  10. #10
    Ngày gia nhập
    12 2009
    Bài viết
    4

    Mặc định con tro C

    Mình thấy contro thật lợi hại được sử dụng nhiều trong danh sách liên kết dạng stack và queue ,nhưng contro trong stack hay queue thì hơi khó chịu vì dùng contro động nên nó tăng giảm có quy luật nhưng lúc thì nhảy lung tung do ô nhớ không liên tục
    VD:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    struct tong
    {
    int mu;
    int hs;
    struct tong *next;//bạn nào có thể giải thích chút về contro next này ko
    };
    float *tinh(float x,int mu,int hs)
    {float s=hs;
    while(mu)
    {
    s=s*x;
    mu--;
    };
    return &s;
    }
    void main()
    {
    char c;
    float kq=0,x;
    int m,h;
    struct tong *p;
    struct tong *l;
    l=NULL;
    do
    {printf("\nnhap he so:");
    scanf("%d",&h);
    printf("\nnhap mu:");
    scanf("%d",&m);
    if(h!=0 && m>=0)
    {
    p=(struct tong *)malloc(sizeof(struct tong));
    p->mu=m;
    p->hs=h;
    p->next=l;
    l=p;
    }
    c=getch();
    }while(c!=27);
    printf("\n nhap vao x:");
    scanf("%f",&x);
    p=l;
    while(p!=NULL)
    {
    kq=kq+*tinh(x,p->mu,p->hs);
    printf("\n mu:%d hs:%d",p->mu,p->hs);
    p=p->next;
    };
    printf("\n ket qua la:%f",kq);
    getch();
    }
    mình nghiên cứu mà vẫn chưa rõ ràng phần stack này
    contro next đứng trong cấu trúc struct để làm gì và nó sẽ trỏ đến đâu,kích thước dời khi p tro đến phần tử khác
    mà sao nó biết tự dời đến phần tử khác thuộc cấu trúc struct khi xem kết quả

Các đề tài tương tự

  1. Lập trình C++ trong visual studio có cách nào để dùng winform mà vẫn dùng cách viết trên c++ được ?
    Gửi bởi homgiaouoc trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 08-10-2013, 12:50 PM
  2. Bài toán quản lí nhân viên dùng dùng danh sách liên kết trong C++. Mong mọi người góp ý!
    Gửi bởi rataki trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 22-11-2012, 11:26 PM
  3. Vì sao các hàm trong ASP.NET lại dùng kiểu PROTECTED thay vì dùng PRIVATE như Winform ???
    Gửi bởi hu-xeko trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 01-05-2012, 09:26 PM
  4. Trong java mình dùng lớp MAP thì trong c# mình dùng cấu trúc gì thay thế?
    Gửi bởi dragonball trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 15-04-2012, 07:20 PM
  5. Trả lời: 5
    Bài viết cuối: 22-02-2012, 06:20 PM

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