Top Ad unit 728 × 90

Latest news

recent

10 tips trong lập trình C

  1. Nhập môn Con trỏ (pointer): có thể nói đây là khái niệm đặc sắc nhất trong C, nó làm bao lập trình viên chuyên nghiệp bị mê hoặc và cũng làm bao người mới nản lòng. Đơn giản vì khi bạn là cao thủ, bạn cần không gian, tính mở để thả sức tung hoành và con trỏ cho bạn điều đó, cái mà các nền tảng hiện đại không cho phép. Tuy nhiên võ công mạnh lại dễ khiến người mới bị tẩu hỏa nếu không có kiên trì.

    - Khi bạn khai báo một biến thông thường: int iBioz = 10; bạn chỉ định một ô nhớ A nào đó có độ dài của kiểu định nghĩa (ở đây là 4 bytes) trên dãy các ô nhớ trong bộ nhớ và gán cho nó một dãy bit có giá trị 10. Ở đây iBioz đại diện cho giá trị của ô nhớ A. ví dụ khi dùng: int iTmp = iBioz; đồng nghĩa với việc bạn mang giá trị của ô nhớ A gán cho giá trị ô nhớ B nào đó tương ứng với biến iTmp. Ngược lại khi dùng iBioz = iBioz * 3; đồng nghĩa với lấy giá trị ô nhớ A nhân cho 3 sau đó được bao nhiêu gán lại giá trị đó cho ô nhớ A.
    - Khi bạn khai báo: int *pIBioz; bạn chỉ định một ô nhớ C nào đó trên bộ nhớ để lưu giá trị của pIBioz. Tuy nhiên lúc này giá trị của pIBioz không đơn thuần là giá trị độ lớn nữa mà là địa chỉ (vị trí trên bộ nhớ) của một biến nào đó.
    - pIBioz = &iBioz; đồng nghĩa với việc bạn gán giá trị địa chỉ của ô nhớ A vào cho ô nhớ C. Bạn có thể dễ dàng truy xuất tới giá trị của ô nhớ A hay iBioz thông qua pIBioz bằng cách gọi *pIBioz. Cái này tương đương với giá trị của ô nhớ mà địa chỉ đang lưu giữ trong giá trị ô nhớ C hay pIBioz.
    - Từ 3 giải thích ở trên, sau khi bạn thực hiện pIBioz = &iBioz; thì iBioz = iBioz + 1 tương đương với (*pIBioz ) = (*pIBioz ) + 1; Đều có ý nghĩa tăng giá trị lưu trử tại ô nhớ A lên 1 đơn vị.
  2. Thay thế phép * và / bằng phép toán Shift >>, <<. Phép nhân và chia số nguyên cho số có giá trị 2 mũ n thì kết quả trả về tương đương với Shift n.

    x << 1 == x * 2              x << 2 == x * 4
    x >> 1 == x / 2             x >> 2 == x / 4

  3. Các định nghĩa tiền xử lý (preprocessor) trong C: các cú pháp này giúp hướng dẫn trình biên dịch lọc ra đoạn nào cần biên dịch, đoạn nào không. Định nghĩa trước các hằng số, định dạng hàm (macro) và nhập các định nghĩa mã nguồn từ các tập tin tiêu đề (header .h) khác.
    #define MAXSIZE 256 Định nghĩa hằng số, trong mã nguồn khi nào cần dùng 256 ta có thể dùng MAXSIZE. Ví dụ: int a = MAXSIZE; tương đượng int a = 256;
    #define DOUBLE(x) x+x
    Định nghĩa hàm macro. Trong mã ta dùng int  a = DOUBLE(6) * 10; tương đương với int  a = 6 + 6 * 10; và lưu ý nó cũng tương đương với int  a = 6 + (6 * 10); vì * có độ ưu tiên cao hơn +.
    #include <stdio.h>
    Nhập vào mã các khai báo từ một tập tin tiêu đề (.h) khác. Dùng <> trong trường hợp tập tin tiêu đề thuộc về những tập tin chuẩn của thư viện nền tảng, hay dùng chung cho nhiều chương trình khác nhau. Dùng "" ví dụ #include "myheader.h" trong tình huống tập tin tiêu đề là những khai báo của riêng ứng dụng hay dự án đang làm việc.
    #ifdef vax
    printf("Xin chào VAX\n"); 
    #endif
    #ifdef sun
    printf("Xin chào SUN\n"); 
    #endif
    Tùy theo từng điều kiện mà biên dịch đoạn mã thích hợp. Nếu vax, sun hay cả hai được khai báo thì dòng lệnh bên trong điều kiện mới được biên dịch. Có 3 cách để khai báo vax, sun. Cách thứ nhất là khai báo bằng biến môi trường, cấu hình hệ thống (tùy theo hệ điều hành, nền tảng mà khác nhau). Cách thứ 2 là khai báo bằng cách cấu hình compiler, truyền tham số thích hợp cho nó trước khi chạy. Cách thứ 3 là khai báo trong code bằng cú pháp: #define vax. Nếu bạn đặt dòng khai báo này trước điều kiện trên thì Xin chào VAX sẽ được in.
cont...
    Binh Nguyen - Bioz
    10 tips trong lập trình C Reviewed by Bioz Nguyen on 5:31:00 PM Rating: 5
    All Rights Reserved by IEEV © 2009 - 2016
    Powered By Blogger, Designed by Sweetheme

    Contact Form

    Name

    Email *

    Message *

    Powered by Blogger.