C語言size_t類型

在C語言中,很多庫參數的參數和返回值的數據類型是size_t,讓很多初學都不理解。size_t不是C語言的關鍵字,也不是基本數據類型,而是C語言自定義的數據類型。

例如以下庫函數的聲明:

size_t strlen(const char *s);
void *memset(void *s, int c, size_t n);
char *strncpy(char *dest, const char *src, size_t n);
void *malloc(size_t size);

2、測試size_t類型

關於size_t的定義,百度一下,發現有很多種說法,這些說法不一定準確,不同的操作系統,不同的C語言編譯器和版本各不相同,我們用以下代碼來測試一下。

/*
 * 程序名:book.c,此程序用於測試size_t類型。
 * 作者:C語言技術網(www.freecplus.net) 日期:20190525。
*/
#include <stdio.h>
#include <string.h>

int main()
{
  size_t ii;

  ii=1234567890;
  printf("ii=%ld,sizeof(ii)=%ld\n",ii,sizeof(ii));

  ii=-1234567890;
  printf("ii=%ld,sizeof(ii)=%ld\n",ii,sizeof(ii));
}

運行效果
在這裏插入圖片描述

我採用的是64位的CentOS7,從上面測試的結果可以看出,size_t其實就是一個8字節的長整數。

那麼C語言編譯器爲什麼要定義size_t?使用size_t可能會提高代碼的可移植性、有效性或者可讀性,它的定義大致如下:

typedef unsigned long size_t;

沒什麼特別。

2、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。

來源:C語言技術網(www.freecplus.net

作者:碼農有道

如果這篇文章對您有幫助,請點贊支持,或在您的博客中轉發此文,讓更多的人可以看到它,謝謝!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章