p不是char类型的,是指向char类型的‘指针’。<br /><br />简单的例子来说吧<br /><br />char a[10] = {0,1,2,3,4,5,6,7,8,9];<br />char *p;<br /><br /> p = &a[0];<br />/*<br />假设a[]地址从0x1000开始,如下<br />0x1000:<br />00 01 02 03 04 05 06 07 08 09<br /><br />不同的系统下a[0] 的地址长度是不尽一样的,当你定义了 char *p时,并不是说 p 就是 8 位的,而是说 p 这个地址里存放的内容是 char型的(8位的),当做如下运算的时候<br />*/<br /><br /> p++;//因为p是指向char型的(8位),所以该处以8位(1Byte)为步进递加指针<br /> //这时 *p == 0x01; <br /> 如果定义 为: int *p;<br /> 那p++;以后 p是以16位(2Byte)为步进递加指针的,这时*p == 0x0203(或者0x0302)<br /><br />以上是粗略的一个例子,说法不是很精确,只是个大概意思<br />仔细看看书上的描述,你就会清楚很多。<br /><br />
|