====简单的语法问题,可我不知道???=== int* p = (int*)pi ;strTmp.Format( "%d,%d,%d",*p,*(p+1),*(p+2) ) ; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同意楼上的strTmp.Format( "%d,%d,%d",*p,*(p+1),*(p+2) ) ; void testFunc(int* pi){……}在用ARRS类型作参数调用的时候,用个类型转换testfun((int*)tt);其它不变楼上老兄的办法也可以写成:int* p = (int*)pi ;strTmp.Format( "%d,%d,%d",p[0],p[1],p[2]) ) ; 还是 xlfrd(大于弱智)厉害,结果正确。int* p = (int*)pi ;strTmp.Format( "%d,%d,%d",p[0],p[1],p[2]) ) ; 奇怪,怎么非得转换成整型指针才能用啊?? testFunc(ARRS * p)中传递的p的值实际上是一个有五个整形元素的数组的首址,要访问各个元素只需要用p[i]就行乐,你的用法:*p[i]是把这个数组中第i个元素的值当作一个地址来操作了。 to Mr_Bomber(炸弹先生):你的说法听起来很有道理,可结果不对!??? 类型定义以后 ARRS 本身就表示指针 请用如下代码改写函数 注意参数的改变 void testFunc(ARRS pi){ CString strTmp; strTmp.Format("%d,%d,%d",pi[0],pi[1],pi[2]); AfxMessageBox(strTmp);} 这个跟指针类型有关,举个例int* p;p++;//在32位时p的值增加4;LPBYTE p;p++;//这时候p只增加1也就是指针每次加减时是以它所指的数据类型的字节数为单位来进行的 to xiaomin235(尘封已久):也就是说,传进来的本身就是指针?不用ARRS * pi多此一举?? 数组名是常数指针,它的名字本身就是地址char a[5];&a与a的值是相等的; { //????下面的写法结果不对 //CString strTmp; //strTmp.Format("%i,%i,%i",(*pi[0]),(*pi[1]),(*pi[2])); //::AfxMessageBox(strTmp); 好象掉了括号 (*pi)[0], ... ATL COM组件的接口里怎样调用扩展DLL? 监测USB插拔问题:inf的GUID搞不清楚。。。。 我是菜鸟请问这个问题 在GDI中如何导入excel读写? 如何从cstring中获得某个中文呀,想了好久也没想出来! 如何让edit中的文字垂直居中 console下写的程序加了界面速度会有多大影响? 帮帮忙,求一个工具!!!!!!!!!!!!!!! chtmlview中隐藏浏览器滚动条有时候成功有时候失败呢 在NT和Win98下串口(并口)通讯是否一样 ●别以为这道题简单● 有人知道VC++中编程分几种?
strTmp.Format( "%d,%d,%d",*p,*(p+1),*(p+2) ) ;
{
……
}
在用ARRS类型作参数调用的时候,用个类型转换testfun((int*)tt);其它不变楼上老兄的办法也可以写成:
int* p = (int*)pi ;strTmp.Format( "%d,%d,%d",p[0],p[1],p[2]) ) ;
奇怪,怎么非得转换成整型指针才能用啊??
你的说法听起来很有道理,可结果不对!???
void testFunc(ARRS pi)
{
CString strTmp;
strTmp.Format("%d,%d,%d",pi[0],pi[1],pi[2]);
AfxMessageBox(strTmp);
}
int* p;
p++;//在32位时p的值增加4;
LPBYTE p;
p++;//这时候p只增加1
也就是指针每次加减时是以它所指的数据类型的字节数为单位来进行的
也就是说,传进来的本身就是指针?不用ARRS * pi多此一举??
char a[5];
&a与a的值是相等的;
//????下面的写法结果不对
//CString strTmp;
//strTmp.Format("%i,%i,%i",(*pi[0]),(*pi[1]),(*pi[2]));
//::AfxMessageBox(strTmp);
好象掉了括号 (*pi)[0], ...