char arr[]="abcdef";//[a b c d e f \0]printf("%d\n",sizeof(arr));//数组大小 --> 7printf("%d\n",sizeof(arr+0));//首元素地址 --> 4/8printf("%d\n",sizeof(*arr));//首元素 --> 1//*arr --> *(arr + 0) --> arr[0]printf("%d\n",sizeof(arr[1]));//第二元素 --> 1printf("%d\n",sizeof(&arr));//数组地址 --> 4/8printf("%d\n",sizeof(&arr+1));//数组地址+1 --> 4/8printf("%d\n",sizeof(&arr[0]+1));//第二元素地址 --> 4/8printf("%d\n",strlen(arr));//数组地址 6printf("%d\n",strlen(arr+0));//首元素地址 6printf("%d\n",strlen(*arr));//err 首元素aprintf("%d\n",strlen(arr[1]));//err 首元素a printf("%d\n",strlen(&arr));//数组地址 6printf("%d\n",strlen(&arr+1));//数组地址+1 randomprintf("%d\n",strlen(&arr[0]+1));//第二元素地址 5
字符串
char* p ="abcdef";//[a b c d e f \0],p存放a的地址printf("%d\n",sizeof(p));//指针p 4/8printf("%d\n",sizeof(p+1));//b的地址 4/8printf("%d\n",sizeof(*p));//a 1printf("%d\n",sizeof(p[0]));//a 1//*p --> *(p + 0) --> p[0]printf("%d\n",sizeof(&p));//p的地址 4/8//&p --> char**printf("%d\n",sizeof(&p+1));//p的地址+1 4/8printf("%d\n",sizeof(&p[0]+1));//b的地址+1 4/8printf("%d\n",strlen(p));//a的地址 6printf("%d\n",strlen(p+1));//b的地址 5printf("%d\n",strlen(*p));//err,aprintf("%d\n",strlen(p[0]));//err,aprintf("%d\n",strlen(&p));//p的地址 randomprintf("%d\n",strlen(&p+1));//p的地址+1 randomprintf("%d\n",strlen(&p[0]+1));//b的地址 5
#include<stdio.h>intmain(){char* a[]={"work","at","sangfor"};//char* p = "sangfor";//存放字符串首字符地址char** pa = a;//pa存放数组名
pa++;// wo --> aprintf("%s\n",*pa);return0;}