有关数组的运算

来源:互联网 发布:欧洲卡车模拟2 知乎 编辑:程序博客网 时间:2024/06/01 10:02

一维数组:

        int a[ ] = {1,2,3,4};    //
printf("%\n", a);         //数组首元素的地址
printf("%\n", a+1);     //数组第二个元素的地址(首元素地址+4)
printf("%\n", &a);       //数组的地址
printf("%\n", &a+1);   //数组的地址+1,跳过整个数组


printf("%\n", sizeof(a));  //16 整个数组的字节数
printf("%\n", sizeof(a+0));//4   首元素
printf("%\n", sizeof(*a));//4   
printf("%\n", sizeof(a+1));//4    第二个元素
printf("%\n", sizeof(a[1]));//
printf("%\n", sizeof(&a));//4    取出数组的地址(数组的地址4个字节)
printf("%\n", sizeof(&a+1));//4   指向第二个数组地址
printf("%\n", sizeof(*&a));//16   数组的地址(数组大小)    
printf("%\n", sizeof(&a[0]));//4    数组首元素的地址
printf("%\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  遇到\n停止 
printf("%d\n", strlen(arr+0));        //6   首元素
printf("%d\n", strlen(*arr));           //X   指首元素
printf("%d\n", strlen(arr[1]));        //X   指数组第二个元素向后遇到反斜杠0停止
printf("%d\n", strlen(&arr));          //6
printf("%d\n", strlen(&arr+1));      //随机值N数组加1,调到f后面
printf("%d\n", strlen(&arr[0]+1));  //N-1


char *p = "abcdef";
printf("%d\n", sizeof(p));              //7  字符串的大小
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  遇到\n停止 
printf("%d\n", strlen(p+1));            //5   第二个元素开始首元素
printf("%d\n", strlen(*p));               //X   指首元素
printf("%d\n", strlen(p[0]));             //X   
printf("%d\n", strlen(&p));//6
printf("%d\n", strlen(&p + 1));         //随机值N-6,跳过字符串
printf("%d\n", strlen(&p[0] + 1));     //5




0 0
原创粉丝点击