指针、数组与sizeof运算符
1、sizeof是C语言的一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof的作用是用来返回()里边 的变量或者数据类型占用的内存字节数。 2、sizeof存在的价值: 主要是因为在不同平台下各种数据类型所占的内存字节数不尽相同(譬如int在32位系统上为4字节,在16位系统上 为2字节)。所以程序中需要使用sizeof来判断当前变量/数据类型在当前环境下占几个字节。 3、举例说明: 例子1:char str[] = "hello"; sizeof(str) //元素所占的字节数,也就是数组的大小 占6个字节 sizeof(str[0]) //第0个元素,第0个元素是char型的,所以 占1个字节 sizeof(str) //字符串的长度(不包含最后的\0), 占5个字节 例子2:char str[] = "hello"; char *p = str;//str做右值,相当于首元素的首地址,数组的元素是char型, //那么str就是char *,刚好匹配 sizeof(p) //p本身是一个指针变量,跟p指向的变量一点关系没有;只是一个char *指针的长度, //32位系统上所有的指针的长度都是4 sizeof(*p) //p所指向的变量,p所指向的变量是char型的,相当于sizeof(char) 自然是1 strlen(p) //相当于strlen