char* p = "acb";
printf("%c",*p+1); a+1->b
printf("%s",*p+1); 报错,类型不匹配
printf("%c",*(p+1)); a后面的c
printf("%s",p); acb
printf("%s",p+1); cb
printf("%c",p); 报错,类型不匹配
为什么类型不匹配?
1、p,指针,char型指针;门牌号,例如0x12345678
2、*p *(p+1) *p+1 都是地址存储内容,或者内容的变化;家里的人,例如 一号门牌里面是97
3、%c 是将小于256的【数字】按照ascii的规范打印出来。指针是地址,我们可用的地址一般都大于ascii的范围。至于地址可用范围以及一般怎么用,下回分解。
4、%s,是解析char型指针,将这个地址以及与其连续的一串字符打印出来,遇见‘0’停止。
5、为什么上面3说,把数字按规范打印,明明是abc啊!!因为所有的数据都是用数字的形式存在内存,abc在内存里也都是数字,97 98 99,你要说,我把abc用%d形式能不能打印?自己试试就知道了,还有%x,等等各种格式。
char* p = “abc“;字符,字符串,字符指针,格式输出
最新推荐文章于 2024-08-11 17:09:35 发布