我建立了一个函数如下bool getsome(LPCTSTR szstr[256])
{
....
}以上函数的参数是作为输出数组,在另一个地方引用如下:
LPCTSTR szsomestr[256] = {0};//此时szsomestr[0]有正确的数值。
getsome(szsomestr);然后我使用szsomestr的值用于另一个函数时,发现值就没有了。如下:
showtupian(szsomestr[0]);//此时szsomestr[0]没有正确的数值请问这是为什么?

解决方案 »

  1.   

    LPCTSTR szsomestr[256] = {0};//
    下标取值0~255
      

  2.   

    应该用LPTSTR,C是const,不可写的,作为输出不正确。还有,你传的是个指针数组,但是看szstr这个名字,感觉应该是TCHAR才对。
      

  3.   

    不如这样吧LPCTSTR szstr
    他本身就是个指针,然后加个参数把长度传进去
      

  4.   

    意思是我那个输出参数的函数 ,参数类型改用TCHAR吗
      

  5.   

    你的函数居然编译能通过??
    要输出参数的话用LPSTR
      

  6.   

    楼主,首先,直接说bool getsome(LPCTSTR szstr[256]) 参数LPCTSTR szstr[256]基本上没这种用法,
    理解楼主的用意,楼主可以定义成这样 bool getsome(TCHAR** szppStr); 至于szppStr空间在外部分配,如TCHAR szStr[256]; getsome(&szStr)(这才是楼主需要的)。
    其次,来讨论下LPCTSTR szstr[256],指的是256个LPCTSTR字符串,而每个LPCTSTR都没空间,szstr = {0},临时给了个null值,在函数体内当然没问题,
    调完getsome,自然就没了,要不楼主可以试试LPTSTR szstr[256],估计也是这个情况。
    以上个人理论分析,一家之言,楼主可以验证~~~~
      

  7.   

    我觉得如果你修改szstr[0]应该能返回,你到底怎么修改的?
      

  8.   

    楼主,记得用在getsome中用memcopy取值出来(不要用=赋值)~~~