1. 程式人生 > 其它 >C語言size_t型別

C語言size_t型別

技術標籤:Cc語言

文章目錄

在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);

1、測試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++高效能服務開發基礎》視訊教程已在CSDN學院釋出,優惠價12元,地址如下:

https://edu.csdn.net/course/play/29402

3、版權宣告

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

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

作者:碼農有道

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