簡體   English   中英

strlen函數返回類型 - c編程

[英]strlen function return type - c programing

我是C編程的新手,並試圖從概念上理解它。 我跑到了以下函數原型和其他類似的函數原型

size_t strlen( const char *s );

我不太明白返回類型size_t

size_t基本上是無符號整數類型。 看到這個這個

它基本上是一個unsigned int

將語義視為“可以容納足夠大的數字以存儲內存塊的最大大小的類型”

size_t是C中的數據類型。它是無符號的,並且能夠保存至少與對象的最大大小一樣大的整數值。

所以你永遠不會“溢出”做size_t x = sizeof something; ,它是用於數組索引的正確類型,或malloc的參數。

您的<stddef.h>標頭由typedef定義它,盡管這個事實與它的使用無關。 您應該編寫的代碼不依賴於typedef實際上是什么。

根據C99,§7.17

size_tstddef.h頭文件中定義,是sizeof運算符結果的無符號整數類型 此外,用於size_t的類型不應具有大於signed long int的整數轉換等級,除非該實現支持足夠大的對象以使其成為必要。

ISO C11 7.19 (在標准的早期迭代中非常相似)定義了size_t因此:

sizeof運算符的結果的無符號整數類型。

您可以通過包含stddef.hstdio.h來獲取它。 它不是unsigned int不是unsigned shortunsigned long ,它是一個獨特的類型,雖然可以很容易地促進其他類型。

它只是一個無符號整數類型,從0SIZE_MAX (在stdint.h定義,如果你想使用它)包含值,保證至少為65535

有些人實際上堅持使用intunsigned 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM