输出的结果为什么是0有详细解析

1.若有声明“char a[3]="AB"; char *p=a;”,执行语句“printf("%d",p[2]);”后输出结果是

输出是0,因为数组赋值后,最后一个元素系统会自动赋值结束符'\0',

p指向数组a的首地址,p[2]等价于a[2],a[3]="AB"的第三个字符是\0,\0的ASCII码值是0,所以最后输出的是0

p是个指向a的指针
p[2]就是a[2]
那a[2]为什么是0呢
a[0]='A'
a[1]='B'
a[2]=0
这是字符串基本概念,以\0结尾