数组

来源:互联网 发布:佛山智友软件 编辑:程序博客网 时间:2024/06/05 04:29
//一维数组
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)); // 整个数组                                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)); //大于6的随机值
printf("%d\n", strlen(arr+0)); //随机值
printf("%d\n", strlen(*arr)); //相当于’a'                                 ERROR
printf("%d\n", strlen(arr[1])); //                                              ERROR
printf("%d\n", strlen(&arr)); //
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));
char *p = "abcdef";
printf("%d\n", sizeof(p)); //一个指针4个字节                    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));                                                    ERROR
printf("%d\n", strlen(p[0]));                                                 ERROR
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));
//二维数组
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));//第二行地址                          16
printf("%d\n",sizeof(&a[0]+1));第二行第一个元素           4
printf("%d\n",sizeof(*a));                                                     16

printf("%d\n",sizeof(a[3]));//第四行                                    16



数组名代表整个数组只有两种情况:

sizeof(数组名)

&数组名

0 0
原创粉丝点击