开发手册 欢迎您!
软件开发者资料库

C语言中sizeof()判断数组占用空间及元素个数

sizeof是C语言的一种单目操作符。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。本文主要介绍C语言中,sizeof()判断数组占用空间及元素个数的方法,以及相关的示例代码。

1、sizeof使用方法

sizeof()可以用于数据类型和变量,用于数据类型必须使用括号,用于变量名可以不用括号括住。

1)数据类型

sizeof(type)

2)用于变量名

sizeof(var_name)

sizeof var_name

2、sizeof在数组与指针区别

sizeof在对待数组与指针有区别,对于直接的调用sizeof,如果是数组首地址,sizeof会输出数组所占地址空间的大小(字节为单位)。如果是一个指针的话,则输出在该系统中地址的字节宽度,即(位宽/8)。

例如,

#include int a1;long int a2;short int a3;char a4;float a5;double a6; char ba[7]={1,2,3,4,5,6,7};char *pba=ba;char *pba1; short int bb[3]={1,2,3};short int *pbb=bb;short int *pbb1; void main(void){      printf("int       字节长度:%d\n", sizeof(a1));    printf("long int  字节长度:%d\n", sizeof(a2));    printf("short int 字节长度:%d\n", sizeof(a3));    printf("char      字节长度:%d\n", sizeof(a4));    printf("float     字节长度:%d\n", sizeof(a5));    printf("double    字节长度:%d\n", sizeof(a6));        printf("\n");    printf("char ba[7];   sizeof(ba)   = %d\n", sizeof(ba));    printf("char *pba=ba; sizeof(pba)  = %d\n", sizeof(pba));    printf("char *pba1;   sizeof(pba1) = %d\n", sizeof(pba1));        printf("\n");    printf("short int bb[3];   sizeof(bb)   = %d\n", sizeof(bb));    printf("short int *pbb=bb; sizeof(pbb)  = %d\n", sizeof(pbb));    printf("short int *pbb1;   sizeof(pbb1) = %d\n", sizeof(pbb1));}

3、函数参数中数组和指针

作为参数发送给函数的数组被视为指针,因此将返回指针的大小,而不是数组的大小。示例如下,

#include #include void printSizeOf(int intArray[]);void printLength(int intArray[]);int main(int argc, char* argv[]){    int array[] = { 0, 1, 2, 3, 4, 5, 6 };    printf("sizeof of array: %d\n", (int) sizeof(array));    printSizeOf(array);    printf("Length of array: %d\n", (int)( sizeof(array) / sizeof(array[0]) ));    printLength(array);}void printSizeOf(int intArray[]){    printf("sizeof of parameter: %d\n", (int) sizeof(intArray));}void printLength(int intArray[]){    printf("Length of parameter: %d\n", (int)( sizeof(intArray) / sizeof(intArray[0]) ));}