This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

0 or NULL

what is the pointer ?
Added by bronzeboyvn about 2 years ago  »  Votes: 1/1

Anh z có đặt một câu hỏi về pointer cho mình thế này:

theo man time(2) thì time(time_t *tlo), nhưng sao anh thấy trong một mã nguồn dùng (time(0)) ? Tức là dùng số 0 thay cho null pointer?

Câu trả lời là có thể hiểu như thế, 0 thay thế cho NULL pointer. Pointer chính là một số nguyên 32bit trên máy 32bit (tương ứng 64bit trên máy 64bit), số nguyên này không phải để ta tính toán số học bình thường mà là địa chỉ vùng nhớ. Như vậy nếu truyền tham số 0 cho hàm time(time_t *tlo), lúc này pointer time_t có địa chỉ là 0x0000 tương ứng với NULL mà hệ điều hành định nghĩa trong không gian vùng nhớ ảo (virtual memory space).

Có thể kiểm tra bằng chương trình sau:

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5    int *x = 0;
 6    if (x == NULL)
 7       printf("x is NULL-pointer");
 8    else
 9       printf("never reach here!");
10    return 0;
11 }

Chương trình khi chạy sẽ xuất ra dòng x is NULL-pointer; nếu ta gán int *x = 0x1234;, kết quả tương ứng là never reach here!.


Comments

Added by icy about 2 years ago

Hehe cảm ơn C. nhiều :P Ba cái linh tinh lặt vặt này làm cho C khó học quá :D