1:计算机能存的只能是二进制数,所以不管你是地址还是字符,在计算机表示都是二进制数;
2:在C中,数组的名字==地址,也就是说对 char a[10];会把10个字符存在内存,而你要找到这个字符串,需要字符串首字的地址,这个地址就是记录在 a中;
3:你打印a的内容时,会用 printf("%s",a),而不是%s a[0]或a[1],也就是%s的时候,给出地址,打印内容;
4:但是,字符的名字!=地址; 比如char a=‘c’;你可以printf("%c",a);也就是%c和%s,需要提供的参数是不一样的,%c是给出名字,打印内容;
5:你的第二个问题,p是指针==数组的地址,回到我写的,这个指针的名字是p,参考1和4,地址也是需要存储的,用%d,给出了指针的名字p,当然是打印名字指向的内容;
%d输出的是转换成ascll码的int型值,其实p就是字符串的首地址,输出p就是输出字符串,&p才是取址