总是搞不明白指针作为函数的传递参数时的用法,自己做了个例子,
部分代码如下,请大侠们指正:
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声明字符串数组啊?如何进行函数之间的传递呢?
多谢,盼复!
部分代码如下,请大侠们指正:
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声明字符串数组啊?如何进行函数之间的传递呢?
多谢,盼复!
解决方案 »
- 使用vs打包安装包注册表信息的问题,请大神帮忙看看
- 我在MFC中设置了一个全局变量的类,我在onkeydown中在按下键盘的一个键时想改变该类中的y值,但为什么在ondraw中去不响应没变化
- 求助:视图转换
- 关于usb读写问题
- 我用的VC++6.0,是看MSDN98还是最新的MSDN2004,2005??谢谢!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 请问VC大牛门,对于有个初学者来说,怎么能看出一段代码里哪写自己写的哪些是系统生成的代码呢?
- 高分在线等高手:如何使ListCtrl控件充满整个CFormView视图?
- 关于响应WM_MOUSEMOVE的问题
- 简单问题,高分相送,在线等待...
- vc怎么访问服务器端的Oracle 8i数据库?
- 文件操作可否被勾住?
- 请问:如何在不在屏幕上画图,而直接画在bmp格式的文件里,以备用呢,谢谢!
改成
pFilePath[i] = new char[str.GetLength()];
strcpy(pFilePath[i], (LPCSTR)str);
char* pFilePath[1024];是局部函数,在堆栈理声明的,离开函数就释放了
声明为全局变量或动态开辟空间
能说的详细点吗
“char* pFilePath[1024];//pFilePath指向字符串数组,不知这样是否可以?”错!pFilePath是一个指向一个以0结束的字符串的指针。不是字符串数组的指针。2、for(int i = 0;i < index;i ++)
{
……
pFilePath[i] =str.GetBuffer(str.GetLength());
}
你这样写有问题。每循环一次都要覆盖字符串pFilePath中的一些数据。当然得不到正确的结果了。本质上还是没有搞清楚pFilePah是什么东西。Display()里也有类似的问题!!