#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
int main()
{
char arr[] = { 'a','b','c','d','e','f' };
printf("%d\n", sizeof(arr));//6
//sizeof(数组名),计算整个数组的大小
printf("%d\n", sizeof(arr + 0));//4或8
//是数组首元素的地址,是地址大小就是4或8个字节
printf("%d\n", sizeof(*arr));//1
//*arr就是数组的首元素,大小是1字节
printf("%d\n", sizeof(arr[1]));//1
//第二个元素大小是1个字节
printf("%d\n", sizeof(&arr));//4或8
//取出的是数组的地址,是地址就是4或8个字节
printf("%d\n", sizeof(&arr + 1));//4或8
//&arr+1还是地址,是跳过整个数组后的地址
printf("%d\n", sizeof(&arr[0] + 1));//4或8
//第二个元素的地址,是地址就是4或8
return 0;
}
*/
//strlen计算字符串长度,遇到\0才停止
#include <string>
int main()
{
char arr[] = { 'a','b','c','d','e','f' };
printf("%d\n", strlen(arr));//随机值
//arr是首元素地址,从首元素地址向后数,直到遇到\0停止
printf("%d\n", strlen(arr + 0));//随机值
//首元素地址+0还是首元素地址,跟上面一样
printf("%d\n", strlen(*arr));//非法访问(野指针)
//strlen默认访问地址
//*arr相当于'a','a'的ASCII码是97,把97作为地址编号传过去是非法的
//因为内存要先开辟地址才能使用
printf("%d\n", strlen(arr[1]));//非法访问(野指针)
//跟上面情况一样
printf("%d\n", strlen(&arr));//随机值
//&arr是数组的地址,数组的地址也是从首元素开始数
printf("%d\n", strlen(&arr + 1));//随机值-6
printf("%d\n", strlen(&arr[0] + 1));//随机值-1
return 0;
}