如图1和图2,在c语言中,(*p)与(*p+1)分别以(%c)和(%d)打印出来为什么(ASCLL表中的值)不对应.

2025-05-12 16:45:47
推荐回答(1个)
回答1:

左边
printf("*p:%d\n",*p);//%d要求参数是一个整数,而*p 是一个指向字符串数组的指针,所以打印的是指针的数值
printf("*p+1:%d",*p+1);//原因同上
printf("buf:%d\n",buf);//buf 也是一个地址,打印的也是地址的数值
printf("buf+1:%d\n",buf+1);//buf 也是一个地址,打印的也是地址的数值
printf("buf:%c\n",buf);//%c要求的参数是一个char,而buf 也是一个地址,打印的也是地址的数值的低8位
printf("buf+1:%c\n",buf);//%c要求的参数是一个char,而buf+1 也是一个地址,打印的也是地址 buf+1 的数值的低8位
图2类似