Re: запутался с указателями
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 09.04.02 11:06
Оценка:
Здравствуйте zaxs, Вы писали:

Z>main()

Z>{
Z>char ** files;
Z>vvod(&files);
Z>}
Z>vvod(char *** list)
Z>{
Z>int i,n=3;
Z>for(i=0;i<n;i++) *list=(char **)calloc(n,sizeof(char *));
Z>**(list+0)="zxcvb";
Z>**(list+1)="asdfg";
Z>**(lis t+2)="qwert";
Z>}
Z>Так вот а в main передается только первое значение массива, т.е. **(list+0).
Z>files[0] = "zxcvb"; а вот files[1], files[2]="";
Z>Подскажите как получать все значения ???

тут две ошибки
1) память надо выделять только один раз, а не три
2) вместо **(list + 0) должно быть *((*list) + 0)
vvod(char *** list)
{
  int n=3;
  *list=(char **)calloc(n,sizeof(char *));
  *(*list+0)="zxcvb";
  *(*list+1)="asdfg";
  *(*list+2)="qwert";
}


Но ИМХО вот такой код более понятен:
vvod(char *** list)
{
  int n=3;
  char ** l = (char **)calloc(n,sizeof(char *));
  l[0]="zxcvb";
  l[1]="asdfg";
  l[2]="qwert";
  *list = l;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.