数组的大小和长度

来源:互联网 发布:韩版男装淘宝店有哪些 编辑:程序博客网 时间:2024/05/16 01:08
#include<stdio.h>int main(){int a[] = {1,2,3,4};printf("%d\n",sizeof(a)); //16printf("%d\n",sizeof(a+0));//4printf("%d\n",sizeof(*a)); //4printf("%d\n",sizeof(a+1)); //4printf("%d\n",sizeof(a[1])); //4printf("%d\n",sizeof(&a)); //4printf("%d\n",sizeof(&a+1));//4printf("%d\n",sizeof(&a[0]));//4printf("%d\n",sizeof(&a[0]+1)); //4getchar();return 0;}
#include<stdio.h>#include<string.h>int main(){char arr[] = {'a','b','c','d','e','f'}; printf("%d\n", sizeof(arr)); //6printf("%d\n", sizeof(arr+0));//4printf("%d\n", sizeof(*arr));//1printf("%d\n", sizeof(arr[1]));//1printf("%d\n", sizeof(&arr)); //4printf("%d\n", sizeof(&arr+1));//4printf("%d\n", sizeof(&arr[0]+1));//4 printf("%d\n", strlen(arr));//随机值printf("%d\n", strlen(arr+0));//随机值//printf("%d\n",strlen(*arr));//printf("%d\n", strlen(arr[1]));printf("%d\n", strlen(&arr));//随机值printf("%d\n", strlen(&arr+1));//随机值printf("%d\n", strlen(&arr[0]+1)); //随机值getchar();return 0;}
#include<stdio.h>#include<string.h>int main(){char *p = "abcdef";printf("%d\n", sizeof(p));//4printf("%d\n", sizeof(p+1));//4printf("%d\n", sizeof(*p)); //1printf("%d\n", sizeof(p[0])); //1printf("%d\n", sizeof(&p)); //4printf("%d\n", sizeof(&p+1)); //4printf("%d\n", sizeof(&p[0]+1)); //4 printf("%d\n", strlen(p)); //6printf("%d\n", strlen(p+1));//5//printf("%d\n", strlen(*p));//printf("%d\n", strlen(p[0]));printf("%d\n", strlen(&p));//随机值printf("%d\n", strlen(&p+1));//随机值printf("%d\n", strlen(&p[0]+1));//5 getchar();return 0;}
#include<stdio.h>#include<string.h>int main(){char p[] = "abcdef";printf("%d\n", strlen(p)); //6printf("%d\n", strlen(p+1));//5//printf("%d\n", strlen(*p));//printf("%d\n", strlen(p[0]));printf("%d\n", strlen(&p));//6printf("%d\n", strlen(&p+1));//随机值printf("%d\n", strlen(&p[0]+1));//5 getchar();return 0;}
#include<stdio.h>#include<string.h>int main(){int a[3][4] = {0};  printf("%d\n",sizeof(a)); //48printf("%d\n",sizeof(a[0][0]));//4;printf("%d\n",sizeof(a[0]));//16;printf("%d\n",sizeof(a[0]+1));//4printf("%d\n",sizeof(a+1)); //4printf("%d\n",sizeof(&a[0]+1));//4printf("%d\n",sizeof(*a)); //16printf("%d\n",sizeof(a[3])); //16getchar();return 0;}
总结 :数组名只有在两种情况下代表整个数组
1 sizeof()括号中只放数组名时代表整个数组;
2 取地址&数组名代表整个数组;
除此之外的所有情况均指数组首元素地址或数组地址。
0 0