sizeof(数组名)计算的是数组总大小,单位是字节。
不是函数,是关键字,是操作符。()里的不运算。
int a=10;
short s=2;
printf("%d\n",sizeof(s=a+3)); //2
printf("%d\n",s); //2
字符串求长度,\0不计算。\0只是结束标志。
如果没有\0,输出随机值。
所有的地址都是4个字节。
(1)sizeof(数组名)计算的是整个数组的大小。单位:字节。
(2)&数组名,取出的是数组的地址,这里的数组名表示整个数组。
除(1)(2)外,所有数组名都表示首元素地址。
二维数组要看首元素的地址,首先要把二维数组想象成一维数组。
//int main()
//{
// //一维数组
// int a[] = {1,2,3,4};
// printf("%d\n",sizeof(a));//16
// 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
// 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
// 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));//x
// printf("%d\n", strlen(arr+0));//x
// //printf("%d\n", strlen(*arr));//err
// //printf("%d\n", strlen(arr[1]));//err
// printf("%d\n", strlen(&arr));//x
// printf("%d\n", strlen(&arr+1));//x
// printf("%d\n", strlen(&arr[0]+1));//x
//
// char arr[] = "abcdef";
// printf("%d\n", sizeof(arr));//7
// printf("%d\n", sizeof(arr+0));//4
// 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));//6
// printf("%d\n", strlen(arr+0));//6
// //printf("%d\n", strlen(*arr));//err
// //printf("%d\n", strlen(arr[1]));//err
// printf("%d\n", strlen(&arr));//6
// printf("%d\n", strlen(&arr+1));//x
// printf("%d\n", strlen(&arr[0]+1));//5
//
// char *p = "abcdef";
// printf("%d\n", sizeof(p));//4
// printf("%d\n", sizeof(p+1));//4
// printf("%d\n", sizeof(*p));//1
// printf("%d\n", sizeof(p[0]));//1
// printf("%d\n", sizeof(&p));//4
// printf("%d\n", sizeof(&p+1));//4
// printf("%d\n", sizeof(&p[0]+1));//4
//
// printf("%d\n", strlen(p));//6
// printf("%d\n", strlen(p+1));//5
// //printf("%d\n", strlen(*p));//err
// //printf("%d\n", strlen(p[0]));//err
// printf("%d\n", strlen(&p));//x
// printf("%d\n", strlen(&p+1));//x
// printf("%d\n", strlen(&p[0]+1));//5
// //二维数组
// int a[3][4] = {0};
//
// printf("%d\n",sizeof(a));//48
// printf("%d\n",sizeof(a[0][0]));//4
// printf("%d\n",sizeof(a[0]));//16
// printf("%d\n",sizeof(a[0]+1));//4
// printf("%d\n",sizeof(a+1));//4
// printf("%d\n",sizeof(&a[0]+1));//4
// printf("%d\n",sizeof(*a));//16
// printf("%d\n",sizeof(a[3]));//16
//
// return 0;
//}
int main()
//{
// //char arr[] = "abcdef";
// //printf("%d\n", strlen(arr));//6
// //printf("%d\n", strlen(arr+0));//6
// printf("%d\n", strlen(*arr));//err
// printf("%d\n", strlen(arr[1]));//err
// //printf("%d\n", strlen(&arr));//6
// //printf("%d\n", strlen(&arr+1));//x
// //printf("%d\n", strlen(&arr[0]+1));//5
// //printf("%d\n", sizeof(arr));//7
// //printf("%d\n", sizeof(arr+0));//4
// //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
//
//
//
// //char* p = "abcdef";
// //printf("%d\n", strlen(p));//6
// //printf("%d\n", strlen(p+1));//5
// printf("%d\n", strlen(*p));//err
// printf("%d\n", strlen(p[0]));//err
// //printf("%d\n", strlen(&p));//
// //printf("%d\n", strlen(&p+1));
// //printf("%d\n", strlen(&p[0]+1));
//
printf("%d\n", sizeof(p)); //4
printf("%d\n", sizeof(p+1));//4
printf("%d\n", sizeof(*p)); //1
printf("%d\n", sizeof(p[0]));//1
printf("%d\n", sizeof(&p));//4
printf("%d\n", sizeof(&p+1));//4
printf("%d\n", sizeof(&p[0]+1));//4
//
//
// //二维数组
// int a[3][4] = {0};
// printf("%p\n", &a[0][0]);
// printf("%p\n", &a[0]+1);
//
// printf("%d\n",sizeof(a));
// printf("%d\n",sizeof(a[0][0]));
// printf("%d\n",sizeof(a[0]));
// printf("%d\n",sizeof(a[0]+1));
// printf("%d\n",sizeof(a+1));//4
// printf("%d\n",sizeof(&a[0]+1));
// printf("%d\n",sizeof(*a));//16
// printf("%d\n",sizeof(a[3]));//16
//
// //short s = 3;
// //int a = 10;
// //printf("%d\n",sizeof(s=a+5));//2
// //printf("%d\n", s);//3
//
// return 0;
//}
未完待续。。。