指针传递的问题!求助

longagoer 2003-08-03 10:35:17
总是搞不明白指针作为函数的传递参数时的用法,自己做了个例子,
部分代码如下,请大侠们指正:
OnButton1()
{
CString str;

char* pFilePath[1024];//pFilePath指向字符串数组,不知这样是否可以?

//get filepaths
for(int i = 0;i < index;i ++)
{
m_lstFileList.GetText(i,str);//m_lstFileList是一个CListCtrl控件,列出了文件路径;
pFilePath[i] =str.GetBuffer(str.GetLength());
}

Display(pFilePath,index);
}

Display(char *pFilePath[1024], int nFileNum)
{
CString str;

for (int i = 0;i < nFileNum;i ++)
{
str = pFilePath[i];
AfxMessageBox(str);
}
return TRUE;
}
能够正常编译,弹运行后,不能正常显示每个str的值,为什么啊?
请问大侠们如何用char声明字符串数组啊?如何进行函数之间的传递呢?
多谢,盼复!
...全文
78 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
uoyevoli 2003-08-03
  • 打赏
  • 举报
回复
1、引用:
“char* pFilePath[1024];//pFilePath指向字符串数组,不知这样是否可以?”

错!pFilePath是一个指向一个以0结束的字符串的指针。不是字符串数组的指针。

2、for(int i = 0;i < index;i ++)
{
……
pFilePath[i] =str.GetBuffer(str.GetLength());
}
你这样写有问题。每循环一次都要覆盖字符串pFilePath中的一些数据。当然得不到正确的结果了。本质上还是没有搞清楚pFilePah是什么东西。

Display()里也有类似的问题!!
longagoer 2003-08-03
  • 打赏
  • 举报
回复
在Display()函数中如何依次得到每个字符串呢?我只能得到一个
longagoer 2003-08-03
  • 打赏
  • 举报
回复
不明白啊,那如何得到pFilePath指向的每个字符串呢?
能说的详细点吗
normalnotebook 2003-08-03
  • 打赏
  • 举报
回复
不好意思,我搞错了
normalnotebook 2003-08-03
  • 打赏
  • 举报
回复
那是当然的
char* pFilePath[1024];是局部函数,在堆栈理声明的,离开函数就释放了
声明为全局变量或动态开辟空间
afc 2003-08-03
  • 打赏
  • 举报
回复
pFilePath[i] =str.GetBuffer(str.GetLength());
改成
pFilePath[i] = new char[str.GetLength()];
strcpy(pFilePath[i], (LPCSTR)str);
zhaolaoxin 2003-08-03
  • 打赏
  • 举报
回复
同一个str,所以赋给pFilePath[i]的值是一个

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧