Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 2 trên tổng số 2 Đầu tiênĐầu tiên 12
Từ 11 tới 18 trên tổng số 18 kết quả

Đề tài: Các kiến thức cơ bản về lập trình C

  1. #11
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Mặc định Câu lệnh break trong lập trình C

    Câu lệnh break
    Các bạn đã thấy tác dụng của break trong phần cấu trúc switch, ngòai ra break còn có tác dụng là thóat khỏi vòng lặp ngay lập tức.
    ví dụ đọan code sau cho phép bạn nhập một dãy các ký tự kết thúc là phím enter.
    C Code:
    1. char ch;
    2. while(1)
    3. {
    4.     ch=getchar();
    5.     if(ch==13) break;
    6. }

    Bạn thấy đó while(1){,,,,,,} là một vòng lặp không ngừng tuy nhiên ta có thể cho nó ngừng bằng lệnh beak;
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #12
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Mặc định Biến con trỏ trong lập trình C

    Biến con trỏ trong lập trình C

    Định nghĩa: Biến trỏ là một biến dùng để chứa địa chỉ của biến khác.

    Để khai báo một biến trỏ ta có cú pháp sau:
    Syntax Code:
    1. KDL *TênBiến;

    ví dụ:
    C Code:
    1. int *x;

    Ta nói x là một biến trỏ chứa địa chỉ của một biến có kiểu DKL là int (hay trỏ tới một biến có kiểu dữ liệu int).
    Do biến trỏ chỉ chứa địa chỉ của biến khác nên độ lớn của nó thường là 2 byte bất kể nó chứa địa chỉ của biến có kiểu dữ liệu nào.
    C Code:
    1. int *a;
    2. double *b;
    3. if(sizeof(a)==sizeof(b))
    4. {
    5.     printf("hai bien nay co kich thuong bang nhau");
    6. }

    Để sử dụng biến trỏ này ta phải trỏ nó tới một biến, bằng cách gán địa chỉ của biến cần trỏ tới vào biến trỏ với tóan tử lấy địa chỉ &
    Syntax Code:
    1. TênBiếnTrỏ=&TênBiếnThường;

    Ví dụ:
    C Code:
    1. int *ptr;
    2. int a=1;
    3. ptr=&a;

    Ta có thể thay đổi để biến trỏ đang trỏ tới biến này sang trỏ tới một biến khác.
    C Code:
    1. int *ptr;
    2. int a=1,b=2;
    3. ptr=&a;
    4. //..............
    5. ptr=&b;

    ta có thể vừa khai báo vừa trỏ tới một biến khác
    C Code:
    1. int a;
    2. int *ptr=&a;

    Cách sử dụng biến trỏ: để biết cách làm việc của biến trỏ ta lưu ý một số phép toán như sau:
    & phép toán này đặt trước một biến thường dùng để lấy địa chỉ của biến.
    * phép toán này được đặt trước biến trỏ dùng để lấy nội dung của biến mà biến trỏ trỏ tới.
    ví dụ:
    C Code:
    1. int a=2,*b=&a;
    2. printf("Noi dung cua bien a la :%d",*b);

    ví dụ trên tôi đã dùng biến trỏ b trỏ đến biến a và thông qua tóan tử * tôi truy cập được nội dung của biến a.
    Ngòai ra ta còn có thể thông qua tóan tử * để sửa đổi nội dung của biến mà con trỏ đang trỏ tới.

    C Code:
    1. int a=2,*ptr=&a;
    2. *ptr=3;
    3. printf("Noi dung cua bi thay doi bang:%d",a);

    ví dụ trên ta sẽ nhận được a=3; do ta đã dùng * thông qua ptr truy cập và sử đổi nội dung của biến a.
    Đến đây các bạn vẫn chưa thấy hết tinh hoa của con trỏ phần tiếp theo tôi sẽ mở rộng vấn đề con trỏ thêm. Có rất nhiều người nói nếu bạn là một lập trình viên C mà không nắm hết con trỏ tức là bạn chưa biết gì về C. Hẹn gặp lại.

  3. #13
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Mặc định Mối tương quan giữa biến trỏ và mảng

    Mối tương quan giữa biến trỏ và mảng

    Khi ta khai báo một mảng thì tên mảng chính là tên biến trỏ và biến trỏ này luôn trỏ đến vị trí ô nhớ đầu tiên của mảng.
    Và biến trỏ này là biến trỏ hằng tức nó luôn trỏ tới vị trí đầu tiên của mảng, ta không thể thay đổi cho biến trỏ này trỏ đến biến khác.
    C Code:
    1. int a[5]={1,2,3,4,5};
    2. printf("giá trị a[0] là: %d",*a);

    Ta có thể dùng biến trỏ để trỏ đến bất cứ phần từ nào trong mảng
    C Code:
    1. int*ptr;
    2. ptr=a;
    3. printf("gia tri a[0] là:%d",*ptr);

    tại sao tôi không dùng ptr=&a; như tôi đã đề cập ở trên a là một hằng con trỏ luôn chứa địa chỉ của biến a[0], do để ptr trỏ đến phần tử đầu tiên của mảng ta chỉ cần gán ptr=a;tức ptr=&a[0], nếu bạn thích thì bạn cũng co thể viết lại là ptr=&a[0].
    Và từ đây ptr có thể thao tác tương tự như là một mảng để lấy giá trị của phần tử thứ i trong a thông qua ptr ta chỉ vịêc viết ptr[i].
    C Code:
    1. int a[5]={1,2,3,4,5}
    2. int *ptr=a;
    3. for(int i=0;i<5;i++)
    4.     printf("%d",ptr[i]);

  4. #14
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Cộng biến trỏ với một số nguyên

    Khi ta cộng biến trỏ tới một số nguyên tức ta đã thay đổi cho biến trỏ tham chiếu tới một biến khác. Còn biến trỏ này trỏ tới đâu ta có công thức tính như sau:
    Đầu tiên ta khai báo một biến trỏ sau đó cho nó trỏ tới một biến.
    C Code:
    1. KDL *ptr, x; //KDL :kiểu dữ liệu
    2. ptr=&x;
    khi ta thực hiện phép toán cộng ptr với một biến nguyên i tức
    C Code:
    1. ptr=ptr+i
    thì lúc này ptr sẽ tham chiếu tới vùng nhớ có địa chỉ là ptr+sizeof(KDL)*i;
    Vùng nhớ này nếu ta không biết nó là gì thì không nên thay đổi giá trị của nó rất nguy hiển cho chương trình.
    Ví dụ:
    C Code:
    1. #include<stdio.h>
    2. int main()
    3. {
    4.     int *ptr,a;
    5.     ptr=&a;
    6.     printf("ptr hien tai dang chi toi dia chi la %d",ptr);
    7.     printf("\nDo lon cua kieu du lieu la %d byte",sizeof(a));
    8.     ptr=ptr + 2;
    9.     printf("\nSau khi cong 2 vao thi ptr chi toi dia chi la %d",ptr);
    10.     return 0;
    11. }

  5. #15
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Mặc định phép toán cộng biến trỏ

    phép toán cộng biến trỏ (tt)

    Như tôi đã nói ở trên khi ta làm thay đổi giá trị của một biến trỏ đến bằng phép toán cộng tức ta đã cho biến trỏ tham chiếu tới một vùng nhớ mới ta sẽ gặp nguy hiểm nếu không xác định được biến trỏ đang trỏ tới đâu vậy câu hỏi đặt ra là phép toán cộng cho biến trỏ sẽ giúp được gì cho chúng ta?
    Thông thường phép toán này làm việc với một biến trỏ, trỏ đến mảng sẽ có hiệu lực rất hay.
    Ví dụ khi ta khai báo một mảng a 7 phần tử và một biến trỏ , chỉ đến ô nhớ đầu của a như sau:
    C Code:
    1. int a[7], *ptr=a;
    2. for(int i=0;i<7;i++)
    3.     a[i]=i;

    giả sử biến int có giá trị là 2 byte(mỗi trình biên dịch sẽ có độ lớn của kiêu int khác nhau) và lúc này địa chỉ của a[0] là 8 thì ptr sẽ là 8 và ta nếu ta có phép toán :
    C Code:
    1. ptr=ptr+1;
    tức ptr sẽ trỏ đến địa chỉ ptr+sizeof(int)*1 tức ptr=10 đây chính là điạ chỉ của a[1].
    xét ví dụ sau thông qua biến trỏ ptr để khởi gán các giá trị cho mảng a;
    C Code:
    1. #include<stdio.h>
    2. int main()
    3. {
    4.     int a[7], *ptr=a,i;
    5.     printf("mang a ban dau co gia tri la:");
    6.     for(i=0;i<7;i++)
    7.     {
    8.           printf("%d ",a[i]);
    9.      }
    10.    
    11.     for(i=0;i<7;i++)
    12.     {
    13.         *ptr=i;
    14.           ptr++;
    15.     }
    16.     printf("\nNoi dung cua mang a sau khi khoi tao  la");
    17.     for(i=0;i<7;i++)
    18.     {
    19.           printf("%d ",a[i]);
    20.      }
    21.     return 0;
    22. }

  6. #16
    Ngày gia nhập
    10 2006
    Bài viết
    107

    Mặc định Các kiến thức cơ bản về lập trình C

    Bổ sung thông tin chút về vòng lặp ! (Có gì sai xót bỏ qua cho)
    ===============================================
    Trong C (chưa học C++) có 3 loại vòng lặp:

    1. For...(Vòng lặp có xác định : có nghĩa là có xác định số lần lặp trước khi lặp)

    2. While...(Vòng lặp không xác định : có nghĩa là chưa xác định số vòng lặp trước khi lặp)

    3. Do...while...(Tương tự như while nhưng khác chút)

    Cấu trúc:

    1. For...

    Code:
    for (0;1;3)
    {
       2;
    }
    Thực thi theo trình tự 0->1->2->3, trong đó:
    (0) Giá trị khởi gán cho vòng lặp.
    (1) Điều kiện đến khi vòng lặp dừng lại khi mang giá trị đúng.
    (2) Nội dung thực thi trong vòng lặp.
    (3) Thực hiện một biểu thức trong đây.

    2. While...

    Code:
    while (0)
    {
       1;
    }
    Thực thi theo trình tự 0->1, trong đó:
    (0) Điều kiện đúng để thực hiện vòng lặp.
    (1) Nội dung thực thi trong vòng lặp.

    COLOR="DarkOrange"]2. Do...while[/COLOR]

    Code:
    do
    {
       0;
    }
    while (1)
    Thực thi theo trình tự 0->1, trong đó:
    (0) Nội dung thực thi trong vòng lặp.
    (1) Điều kiện đúng để thực hiện vòng lặp.

    * Một chút kiến thức mới học ở thầy giáo
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  7. #17
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Điều chú ý giữa biến trỏ và mảng
    khi ta khai báo một mảng
    C Code:
    1. int a[9];
    Code:
    thì câu lệnh: a[i]=i[a] với i là một số nguyên.
    
    Chứng minh :
    giả sử a[i]=i[a] (1)
    do trình biên dịch hiểu a[k]=*(a+k)
    do đó (1) <==> *(a+i)=*(i+a) Đẳng thức đúng./
    Do đó ta có ví dụ chương trình sau:
    C Code:
    1. #include<stdio.h>
    2. int main()
    3. {
    4.   int a[10],i;
    5.   for(i=0;i<10;i++)
    6.       i[a]=i;
    7.  
    8.   printf("Noi dung cua mang a la :");
    9.   for(i=0;i<10;i++)
    10.       printf("  %d", a[i]);
    11.  
    12. return 0;
    13. }

    Xem thêm: Các toán tử trong lập trình C

  8. #18
    Ngày gia nhập
    05 2007
    Bài viết
    64

    Hằng: là một vùng nhớ có tên giống như biến, tuy nhiên giá trị của hằng là không thay đổi suốt chương trình.
    1 Ví dụ rõ hơn về sự khác nhau giữa hằng và biến :
    Code:
    int t=30;
    int a[t];
    Câu lệnh trên báo lỗi vì không thể dùng biến để khởi tạo mảng

    Code:
    const int=30;
    int a[t];
    Câu lệnh này hoàn toàn đúng vì t là hằng, hoàn toàn có thể dùng hằng để khởi tạo mảng.

    Mong các bạn đóng góp ý kiến !!!
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    I know... nothing

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

  1. [Kiếm Thế] Kiếm Thế Ngạo Thiên Kiếm Chạy Thử Nghiệm vào 10h ngày 15/09
    Gửi bởi c0jskull trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 5
    Bài viết cuối: 29-09-2013, 10:45 AM
  2. [Kiếm Thế] Kiếm Thế Kiếm Linh Chạy Thử Nghiệm vào 10h ngày 4/7
    Gửi bởi c0jskull trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 05-07-2013, 12:16 PM
  3. [Kiếm Thế] Kiếm Thế Kiếm Linh Chạy Thử Nghiệm vào 10h ngày 4/7
    Gửi bởi c0jskull trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 03-07-2013, 10:30 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