[英]strlen function return type - c programing
我是C編程的新手,並試圖從概念上理解它。 我跑到了以下函數原型和其他類似的函數原型
size_t strlen( const char *s );
我不太明白返回類型size_t
它基本上是一個unsigned int
將語義視為“可以容納足夠大的數字以存儲內存塊的最大大小的類型”
size_t
是C中的數據類型。它是無符號的,並且能夠保存至少與對象的最大大小一樣大的整數值。
所以你永遠不會“溢出”做size_t x = sizeof something;
,它是用於數組索引的正確類型,或malloc
的參數。
您的<stddef.h>
標頭由typedef
定義它,盡管這個事實與它的使用無關。 您應該編寫的代碼不依賴於typedef實際上是什么。
根據C99,§7.17
size_t在stddef.h頭文件中定義,是sizeof運算符結果的無符號整數類型 。 此外,用於size_t的類型不應具有大於signed long int的整數轉換等級,除非該實現支持足夠大的對象以使其成為必要。
ISO C11 7.19
(在標准的早期迭代中非常相似)定義了size_t
因此:
sizeof運算符的結果的無符號整數類型。
您可以通過包含stddef.h
或stdio.h
來獲取它。 它不是unsigned int
不是unsigned short
或unsigned long
,它是一個獨特的類型,雖然可以很容易地促進其他類型。
它只是一個無符號整數類型,從0
到SIZE_MAX
(在stdint.h
定義,如果你想使用它)包含值,保證至少為65535
。
有些人實際上堅持使用int
或unsigned int
而不是size_t
但如果你想要真正的可移植源代碼,這在技術上並不是一個好主意。
,除非你實現處理真正的大對象的標准狀態,轉換等級應小於或等於signed long int
-因為它很可能為signed long int
比更大的轉換等級signed int
,可能會丟失信息。
當然,你很少會處理比signed int
大的東西,這就是為什么你大多可以逃脫它。
size_t是c中的unsigned int return類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.