chenyonken 2016-04-30 04:13 采纳率: 0%
浏览 5879
已采纳

cannot convert from 'char *** ' to 'char **

 #include<iostream>
#include<stdlib.h>
using namespace std;

int spitString2(char *buf1,char c,char **myp,int *count)
{
    //strcpy(buf2[0],"aaaaa");
    //strcpy(buf2[1[,"bbbbb");
    char *p=NULL,*pTmp=NULL;
    int tmpcount=0;

    //p和ptmp初始化
    p=buf1;
    pTmp=buf1;

    //2 检索符合条件的位置 p后移  形成差值  挖空字符
    p=strchr(p,c);
    if(p!=NULL)
    {
        if(p-pTmp>0)
        {
            strncpy(myp[tmpcount],pTmp,p-pTmp);
            myp[tmpcount][p-pTmp]='\0';//把第一行数据变成C风格字符串
            tmpcount++;
            //3重新让p和ptmp达到下一次检索的条件
            pTmp=p=p+1;
        }
    }

}

void main()
{
    int ret=0,i=0;
    char *p1="aaaaa,bbbbb";
    char cTmp=',';
    int nCount;
    char **p=NULL;
    p=new (char **)[10*sizeof(char *)];//错误指示的地方
    if(p==NULL)
    {
        return;
    }
    for(i=0;i<10;i++)
    {
        p[i]=new (char*)[30*sizeof(char)];//错误指示的地方
    }

    ret=spitString2(p1,cTmp,p,&nCount);
    if(ret!=0)
    {
        cout<<"fun spitString2() err:"<<ret<<endl;
        return ret;
    }
    for(i=0;i<nCount;i++)
    {
        cout<<p[i]<<endl;
    }
    /////释放内存
    for(i=0;i<10;i++)
    {
        delete p[i];
    }
    delete []p;
}
//代码还不完整

图片说明

  • 写回答

3条回答 默认 最新

  • DukeSeraph 2016-04-30 05:16
    关注

    p=new (char )[10*sizeof(char *)];//错误指示的地方
    这里,p的类型是char
    ,你使用new关键字申请了[10*sizeof(char )]这么大的内存,然而你指定的这个内存的存储类型是char*,所以最终你申请到的内存
    是[10*sizeof(char )]大小的char*型内存块,new会返回一个指针,指向这个char**型的内存块,char**的指针不就是char***的吗?所以这里是你试图将
    char***的内存指针赋给char**的p。
    就像int a=new int[1];这个会报错,因为new int[1]会返回一个(指向一个int大小的内存的)指针。
    所以int * a=new int[1];才是正确的做法。
    如果你要用new申请的是char型的内存,你会得到char*,以此类推。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)