size_t
來自 cppreference.com
定義於標頭檔案 <stddef.h> |
||
定義於標頭檔案 <stdio.h> |
||
在標頭檔案 <stdlib.h> 中定義 |
||
定義於標頭檔案 <string.h> |
||
定義於標頭檔案 <time.h> |
||
在標頭檔案 <uchar.h> 中定義 |
(C11 起) |
|
在標頭檔案 <wchar.h> 中定義 |
(自 C95 起) |
|
typedef /*實現定義*/ size_t; |
||
size_t
是 sizeof、offsetof 和 _Alignof(C23 前)alignof(C23 起) 的結果的無符號整型,具體取決於資料模型。
|
(C99 起) |
目錄 |
[編輯] 注意
size_t
可以儲存任何型別(包括陣列)的理論上可能的最大物件大小。
size_t
通常用於陣列索引和迴圈計數。使用其他型別(例如 unsigned int)進行陣列索引的程式可能會在例如 64 位系統上失敗,當索引超過 UINT_MAX 或依賴於 32 位模運算時。
[編輯] 可能的實現
typedef typeof(sizeof(0)) size_t; // valid since C23 |
[編輯] 示例
執行此程式碼
#include <stddef.h> #include <stdint.h> #include <stdio.h> int main(void) { const size_t N = 101; int numbers[N]; size_t sum = 0; for (size_t ndx = 0; ndx < N; ++ndx) sum += numbers[ndx] = ndx; size_t size = sizeof numbers; printf("sum = %zu\n", sum); printf("size = %zu\n", size); printf("SIZE_MAX = %zu\n", SIZE_MAX); }
可能的輸出
sum = 5050 size = 404 SIZE_MAX = 18446744073709551615
[編輯] 參考
- C23 標準 (ISO/IEC 9899:2024)
- 7.19 常見定義 <stddef.h> (p: TBD)
- 7.20.3 其他整數型別的限制 (p: 待定)
- C17 標準 (ISO/IEC 9899:2018)
- 7.19 常用定義 <stddef.h> (p: 211)
- 7.20.3 其他整數型別的限制 (p: 215)
- C11 標準 (ISO/IEC 9899:2011)
- 7.19 常見定義 <stddef.h> (p: 288)
- 7.20.3 其他整數型別的限制 (p: 293)
- C99 標準 (ISO/IEC 9899:1999)
- 7.17 常用定義 <stddef.h> (p: 253)
- 7.18.3 其他整數型別的限制 (p: 258)
- C89/C90 標準 (ISO/IEC 9899:1990)
- 4.1.6 常用定義 <stddef.h>
[編輯] 另請參閱
減去兩個指標時返回的有符號整型 (typedef) | |
從結構體型別開頭到指定成員的位元組偏移量 (函式宏) | |
C++ documentation for size_t
|