准备工作
1.sizeof
sizeof是一个单目运算符,计算数据类型或变量长度(即所占字节数)
int 整型类型占4个字节;char 字符类型占1个字节;地址占四个字节
2.strlen
strlen(地址),以’\0’为结束标志计算字符串长度的函数(不包括’\0’)
3.&+数组名,数组名表示整个数组,这里取出的是整个数组的地址
sizeof(数组名),数组名表示整个数组,计算的是整个数组的大小,单位是字节
除上述两种情况之外,遇到的所有的数组名都表示数组首元素的地址
一维整型数组
int main()
{
int a[] = { 1, 2, 3, 4 };
printf("%d\n", sizeof(a));//16---a表示整个数组,计算整个数组大小(单位是字节)
printf("%d\n", sizeof(a+0));//4---a+0表示首元素的地址
printf("%d\n", sizeof(*a));//4---a表示首元素地址,*解引用即首元素
printf("%d\n", sizeof(a+1));//4---a+1表示第二个元素地址
printf("%d\n", sizeof(a[1]));//4---a[1]表示第二个元素
printf("%d\n", sizeof(&a));//4---&a表示数组的地址,但是地址的长度是4
printf("%d\n", sizeof(*&a));//16---&a表示数组的地址,*解引用表示整个数组大小
printf("%d\n", sizeof(&a+1));//4---&a表示数组的地址加1,跳过整个数组的地址
printf("%d\n", sizeof(&a[0]));//4---首元素的地址
printf("%d\n", sizeof(&a[0] + 1));//4---首元素的地址加+1,即第二个元素的地址
system("pause");
return 0;
}
字符数组
int main()
{
char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
printf(