问题1:char *sp="pointer"; //字符指针 printf("%s,%c,%c\n",sp,sp,(sp+2)); //pointer,p,i 明明是同一个指针,为什么去掉*之后就可以用%s输出全部,而加上*只能输出一个字符而且只能用%c? 答:因为%s是读取一个字符串首字符的地址,然后从首字符地址从左往右一个个翻译并输出直到\0才停止,而%c仅仅是读一个字符串的第一个字符值并输出出去,题中 sp是一个指针变量用于存储地址的(通常都说*sp是指针用来储存地址,只是*是用来翻译地址的),所以才有%s来输出sp,%c来输出*sp