2009-05-14 25 views
11

Trong một mã đoạn tôi đã thấy điều này:Loại dữ liệu nào là size_t giữ?

size_t w = CGImageGetWidth(inImage); 

Các tài liệu không cho tôi bất kỳ thông tin hữu ích về "size_t". Có ai biết đây là gì?

Trả lời

22

Từ here:

Unsigned loại tách rời

size_t tương ứng với kiểu dữ liệu không thể thiếu được trả về bởi các nhà điều hành sizeof ngôn ngữ và được định nghĩa trong file header (trong số những người khác) như là một loại không thể thiếu unsigned.

Trong <cstring>,, nó được sử dụng làm loại tham số num trong memchr chức năng, memcmp, memcpy, memmove, memset, strncat, strncmp, strncpy và strxfrm, trong mọi trường hợp nó được sử dụng để chỉ định số lượng tối đa byte hoặc ký tự mà hàm phải ảnh hưởng.

Nó cũng được sử dụng làm kiểu trả về cho strcspn, strlen, strspn và strxfrm để trả về kích thước và độ dài.

-2

Đó là loại được sử dụng trong suốt C và C++ để chỉ đại diện cho một số nguyên. Tôi tin rằng nó chỉ là một typedef của int.

+1

Đặc tả Unix đơn định nghĩa nó là "loại tích phân không dấu" nhưng bạn không nên giả định bất kỳ điều gì về chiều rộng thực tế. size_t gần như luôn luôn là unsigned, tuy nhiên, trong khi ssize_t thường được ký để cho phép nó chỉ ra các điều kiện lỗi với -1. –

4

size_t là bí danh (typedef) cho số nguyên không dấu.

+0

Vì vậy, tôi cũng có thể viết NSUInteger w = CGImageGetWidth (inImage); ? – Thanks

+0

Tôi không nhận ra rằng một off-hand, nhưng bạn sẽ có thể viết uint w = CGImageGetWidth (inImage) ;. Typedefs như size_t thường cho mục đích rõ ràng, không phải định nghĩa về cấu trúc. –

7

size_t là một nền tảng phụ thuộc có nghĩa là đại diện cho kích thước của các đối tượng. Nó luôn luôn là unsigned, nhưng nó có thể là một giá trị 32 bit chưa ký trên nền tảng 32 bit hoặc 64 bit giá trị cho nền tảng 64bit. Trên iPhone SDK là unsigned long.

Các vấn đề liên quan