вопрос по указатели в С

Модератор: Модераторы разделов

Аватара пользователя
makss
Сообщения: 226
ОС: Win+ Lin

вопрос по указатели в С

Сообщение makss »

Люди подскажите плиз такую весчь
допустим я создаю массив указателей
char str**;
сколько пол него памяти выделиться в таком случае??
то есть если допустим сделать так

Код: Выделить всё

char str**;
char p*;
int nlines = 0;
while ( len= getline( line, len ) > 0 )
      if ( p =(char *)malloc( len )) == NULL)
          return -1;
      else {
        strstr ( p, line );
        str[nlines++] = p;
      }
....

функция getline взвращает длину строки и указатель на нее
так вот в этом случае под str надо выделять определенное количестао памяти?? типа char *str[100] допустим
не воспринимайте Linux c позиции Windows, учитесь использовать командную строку
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: вопрос по указатели в С

Сообщение elide »

под char str** выделяется ровно sizeof(char**) памяти.... если нужно больше - надо выделять руками.
это, разумеется, если не учитывать того, что вместо char str** надо писать char **str......
слава роботам!
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: вопрос по указатели в С

Сообщение KiWi »

Код: Выделить всё

char **str;

Указатель на указатель, а не массив указателей.
Ничего под него не выделяется. Ты сам должен это делать.
Спасибо сказали:
Аватара пользователя
makss
Сообщения: 226
ОС: Win+ Lin

Re: вопрос по указатели в С

Сообщение makss »

Код: Выделить всё

char **str;

так насколько я понял это эквивалентно

Код: Выделить всё

char *str[]
что и есть массив указателей
хотя и то и другое утверждение в первом случае будет верно вро де как
не воспринимайте Linux c позиции Windows, учитесь использовать командную строку
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: вопрос по указатели в С

Сообщение elide »

насколько я понял это эквивалентно
неправильно понял.
слава роботам!
Спасибо сказали:
Аватара пользователя
_Andrey_
Сообщения: 17
ОС: Gentoo Linux

Re: вопрос по указатели в С

Сообщение _Andrey_ »

Значит это не равноценные записи ;)

int main(int argc, char **argv) и int main(int argc, char *argv[])
Regards, _Andrey_
http://www.wegroup.org
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: вопрос по указатели в С

Сообщение elide »

равноценны.
а char **ptr; и char *arr[]; уже не равноценны (;
не надо путать declaration и definition.
слава роботам!
Спасибо сказали: