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]) ));
}