Передача указателя на строку из массива
От: _aptyp_  
Дата: 17.08.03 12:14
Оценка:
char** split(char* src,char spl_ch)
{
    char ch;
    char* strs[20];
    int strs_cnt=0;

    int src_l=(int)strlen(src);

    int lbound=0;

    for (int i=0;i<src_l;i++)
    {
        ch=src[i];
        if (ch==spl_ch)
        {
            substr(&strs[strs_cnt],src,lbound,i);
            strs_cnt+=sizeof(char);
            lbound=i+1;
        }
    }
    return strs;
}

void substr(char* result[],char* src,int st,int end)
{
    if (end-st<=0) return;
    char buf[100];//=new char[100];//[100]={""};//end-st];
    int buf_cnt=0;
    for (int i=st;i<end;i++)
    {
        buf[buf_cnt]=src[i];
        buf_cnt++;
    }
    buf[end-st]='\0';
    //delete buf;
    *result=buf;
}


Почему в функции substr переменная buf не копируется в result по значению, а копируется по ссылке, т.е. в результате выполнения ф-ии split я получаю массив одинаковых значений? Или нужно специально выделять память в куче?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.