sizeof
sizeof 是C语言中的一个运算符(主要sizeof不是函数,虽然用法很想函数),sizeof的作用是用来返回 ()里面的变量或者数据类型占用的内存字节数。
sizeof存在的价值?
主要是在不同平台下各种数据类型所占的内存字节数不仅相同(譬如int在32位系统中为4字节,在16位系统中为2字节,在64位系统为8字节)。所以程序中需要使用sizeof来判断当前变量/数据类型在当前环境下所占几个字节。举个栗子
#include <stdio.h> int main() { char t[]="hello"; printf("sizeof(t)=%d\n",sizeof(t)); //打印为6 printf("sizeof(t[0])=%d\n",sizeof(t[0]));//打印为1 printf("strlen(t)=%d\n",strlen(t));//打印为5,不算最后的\0 char *p=t; printf("sizeof(p)=%d\n",sizeof(p)); //打印4 ,相当于sizeof(char *) printf("sizeof(*p)=%d\n",sizeof(*p));//打印1 ,*p指向的是char类型,相当于sizeof(char) printf("strlen(p)=%d\n",strlen(p));//打印为5,不算最后的\0,相当于是strlen(t) return 0; }
干货
32为系统中所有指针的长度都是4
strlen是一个c库函数,用于返回一个字符串的长度(注意字符串长度不计算末尾的’\0’),strlen接收的参数一定是字符串(字符串特征是以’\0’为结尾)
sizeof测试一个变量本身和sizeof测试这个变量类型的结果是一样的
sizeof参数为数组名,计算的就是数组所占的内存大小,
int b[100]={0}; sizeof(b)的结果就是100*sizeof(int)
函数形参是数组时,实际传递的不是整个数组,而是数组的首地址,相当于传递的是指针
举例 :
#include <stdio.h> void func(int a[10]) { printf("sizeof(a)=%d\n",sizeof(a));// 结果等于sizeof(int) } int main() { int t[10]={0}; func(t); return 0; }
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!