sizeof和strlen(1)

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;
}
Da
Published 37 original articles · won praise 3 · Views 1114

Guess you like

Origin blog.csdn.net/weixin_43264873/article/details/102886161