众所周知,在数组arr[]中,arr常用于代表数组首元素地址,除去两个特例。
1.sizeof(arr)代表数组的大小。
2.&arr代表取整个的地址。
sizeof与strlen有什么区别,就由以下例子来说明,我们在X86的环境下执行程序。
#include<stdio.h>
{
int main();
int arr[5]={0};
//首先是sizeof
printf("%d",sizeof(arr));
//结果是20,单位是字符
//由于sizeof的作用,sizeof(arr)代表的是数组的大小,arr[5]数组内的五个整型元素,加起来就是20.
printf("%d“,sizeof(&arr));
//结果是4,单位是字符
//&arr代表数组的指针,而指针的大小只与环境有关,在X86的环境下大小为4,在X64的环境下大小为8.
//然后是strlen.
//strlen本人目前了解的还有不少问题,但有一点是strlen的返回类型实际上是size_t strlen(const char *),所以strlen里应该放的类型是指针类型,放置其他类型,一是会导致类型错误,二是会被strlen认定为指针,常常会识别为野指针,导致程序出错。