函数原形 DataCompare(unsigned char c1,unsigned char c2,unsigned char c3);
unsigned char m_Data[200];
unsigned char *ptr=m_Data;
请问:
{
DataCompare(*ptr,*(ptr+1),*(ptr+2));
ptr+=3;
}
和 DataCompare(*(ptr++),*(ptr++),*(ptr++)); 为什么不一样?请解答,Thanks.
unsigned char m_Data[200];
unsigned char *ptr=m_Data;
请问:
{
DataCompare(*ptr,*(ptr+1),*(ptr+2));
ptr+=3;
}
和 DataCompare(*(ptr++),*(ptr++),*(ptr++)); 为什么不一样?请解答,Thanks.
解决方案 »
- gz_qmc大哥请进
- 一个小问题
- 关于画笔的设置
- CListBox的问题
- ADO中的一个问题,高手帮帮忙吧
- VB60调用VC++60写的DLL出错,请高手相帮!!分只剩这么多了,能否赐教
- 从昨天起可用分就不增加了,谁有同样的情况?
- 做SDK开发,不能用他的示例的代码吗?
- 请问, 如何propersheet下面的安扭, 如确定,取消, 帮助等, 是显示中文或英文,可选么?
- vc MCI错误 驱动程序无法识别指定的命令参数
- [Warning] friend declaration `bool operator ==(A<char> &, A<int> &)'
- 请问CListCtrl可以实现网格吗?
而ptr+1只是表达式的值改了ptr本身的值没改
ptr+1是这个表达式的值增加了1,但ptr本身的值不变
如ptr=2,ptr+1=3,但ptr还是2
ptr++就不一样了,它的表达式的值增加了1,ptr本身的值也变了也加了1
如ptr=2,ptr+1=3,ptr=3
#include <stdio.h>void test(unsigned char c1)
{
printf("%3X",c1);
}
void main()
{
unsigned char ch[20];
unsigned char *data; for(int i=0;i<20;i++)
ch[i]=i; data=ch;
for(i=0;i<20;i++)
{
test(*(data++));
}
printf("\n");
data=ch; //data已经改变
for(i=0;i<20;i++)
{
test(*(data+i));
}
}
就因为我试了不一样才题问的。我是三个参数,你试试。
也就是当ptr=0时,DataCompare(ptr++,ptr++,ptr++)实际上就是
DataCompare(0,0,0),函数运行后,ptr=3,这就是问题所在。