sizeof和strlen
sizeof:
sizeof (array name): The total size of the array
sizeof (& array name): the entire array of addresses
In addition, sizeof () are seeking the address of the first element
sizeof (* array name): dereference, the first element of size
sizeof (array name): number of elements within the entire array
sizeof (array name +0): The first element address (and related types)
###### c language the length of the various types of data:
Types of | # 32 | # 64 |
---|---|---|
char | 1 | 1 |
short | 2 | 2 |
int | 4 | 4 |
long | 4 | 8 |
long long | 8 | 8 |
float | 4 | 4 |
double | 8 | 8 |
size_t | 4 | 8 |
strlen:
Find terminator
strlen (array name): random value
strlen (array name +0): random value
strlen (& array name): random value
strlen (& array name + 1): random value -6
strlen (* array name): error, can not access
strlen (array name [1]): error, can not access
int main()
{
int a[] = { 1,2,3,4 };
printf("%d\n", sizeof(a));//16 整个数组大小 4*4
printf("%d\n", sizeof(a + 0));// 4 首元素地址
printf("%d\n", sizeof(*a));//4 首元素
printf("%d\n", sizeof(a + 1));//4 第二个元素地址
printf("%d\n", sizeof(a[1]));//4 第二个元素
printf("%d\n", sizeof(&a));//4 数组的地址
printf("%d\n", sizeof(*&a));//16 整个数组
printf("%d\n", sizeof(&a + 1));//4 跳过一个数组指向4的后面
printf("%d\n", sizeof(&a[0]));//4 首元素地址
printf("%d\n", sizeof(&a[0]+1));//4 第二个元素的地址
char arr[] = { 'a','b','c','d','e','f' };
printf("%d\n", sizeof(arr));//6
printf("%d\n", sizeof(arr + 0));//4 首元素地址 char4个字节
printf("%d\n", sizeof(*arr));//1
printf("%d\n", sizeof(arr[1]));//1
printf("%d\n", sizeof(&arr));//4
printf("%d\n", sizeof(&arr + 1));//4
printf("%d\n", sizeof(&arr[0] + 1));//4
printf("%d\n", strlen(arr));//随机值
printf("%d\n", strlen(arr + 0));//随机值
printf("%d\n", strlen(*arr));//err
printf("%d\n", strlen(arr[1]));//err
printf("%d\n", strlen(&arr));//随机值
printf("%d\n", strlen(&arr + 1));//随机值-6
printf("%d\n", strlen(&arr[0] + 1));//随机值-1
return0;
}