数组的重点知识汇总

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;

//}



未完待续。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值