int* p = (int*)pi ;strTmp.Format( "%d,%d,%d",*p,*(p+1),*(p+2) ) ;

解决方案 »

  1.   

    同意楼上的
    strTmp.Format( "%d,%d,%d",*p,*(p+1),*(p+2) ) ; 
      

  2.   

    void testFunc(int* pi)
    {
    ……
    }
    在用ARRS类型作参数调用的时候,用个类型转换testfun((int*)tt);其它不变楼上老兄的办法也可以写成:
    int* p = (int*)pi ;strTmp.Format( "%d,%d,%d",p[0],p[1],p[2]) ) ; 
      

  3.   

    还是 xlfrd(大于弱智)厉害,结果正确。int* p = (int*)pi ;strTmp.Format( "%d,%d,%d",p[0],p[1],p[2]) ) ; 
    奇怪,怎么非得转换成整型指针才能用啊??
      

  4.   

    testFunc(ARRS * p)中传递的p的值实际上是一个有五个整形元素的数组的首址,要访问各个元素只需要用p[i]就行乐,你的用法:*p[i]是把这个数组中第i个元素的值当作一个地址来操作了。
      

  5.   

    to Mr_Bomber(炸弹先生):
    你的说法听起来很有道理,可结果不对!???
      

  6.   

    类型定义以后 ARRS 本身就表示指针 请用如下代码改写函数  注意参数的改变 
    void testFunc(ARRS pi)
    {
      CString strTmp;
      strTmp.Format("%d,%d,%d",pi[0],pi[1],pi[2]);
      AfxMessageBox(strTmp);
    }
      

  7.   

    这个跟指针类型有关,举个例
    int* p;
    p++;//在32位时p的值增加4;
    LPBYTE p;
    p++;//这时候p只增加1
    也就是指针每次加减时是以它所指的数据类型的字节数为单位来进行的
      

  8.   

    to xiaomin235(尘封已久):
    也就是说,传进来的本身就是指针?不用ARRS  * pi多此一举??
      

  9.   

    数组名是常数指针,它的名字本身就是地址
    char a[5];
    &a与a的值是相等的;
      

  10.   

    {
      //????下面的写法结果不对
      //CString strTmp;
      //strTmp.Format("%i,%i,%i",(*pi[0]),(*pi[1]),(*pi[2]));
      //::AfxMessageBox(strTmp);
      
    好象掉了括号 (*pi)[0], ...