1、sizeof使用方法
sizeof()
可以用于数据类型和变量,用于数据类型必须使用括号,用于变量名可以不用括号括住。
1)数据类型
sizeof(type)
2)用于变量名
sizeof(var_name)
或
sizeof var_name
2、sizeof在数组与指针区别
sizeof在对待数组与指针有区别,对于直接的调用sizeof,如果是数组首地址,sizeof
会输出数组所占地址空间的大小(字节为单位)。如果是一个指针的话,则输出在该系统中地址的字节宽度,即(位宽/8)。
例如,
#include<stdio.h> 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 <stdio.h> #include <stdlib.h> 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]) )); }