anonymous@RULINUX.NET~# | Last login: 2024-11-24 21:01:33 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Форум - Development | [RSS] |
Что-то я запутался. С одномерными массивами всё понятно: имя массива есть указатель на его первый элемент. Работа со строками вполне себе понятна. Пример:
Компилируется без ошибок и предупреждений. И даже работает, как ожидалось. Присвоение (tmp = str) работает. Но стоит перейти к двумерным массивам, как получается уже что-то непонятное. Пример:
Сразу же при компиляции выскакивает предупреждение:
Сразу же ругается на присвоение (tmp = str, строка 15) и на передачу в функцию (строка 16), а при запуске программы получаю:
А вопрос мой, собственно, и состоит в том, как работать с двумерными массивами через указатели. У меня есть два двумерных массива и я хочу передавать в функцию указатель на один их них.
anonymous(*) (2011-04-19 21:02:00)
|
|
|
Скрыть
Re: [C] Указатель на указатель на ...> Попробуй заменить "**" на "*" во втором примере
|
Скрыть
Re: [C] Указатель на указатель на ...Тот же стандартный приём входных параметров для main выглядит также: int main (int argc, char **argv) |
Скрыть
Re: [C] Указатель на указатель на ...>void output (char **msg)
>for(n = 0; n < 1; n++)
P.S. у тебя однобайтная кодировка чтоли? |
Скрыть
Re: [C] Указатель на указатель на ...А, ну и вообще не делай так. Объявляй str как *str[] = {... |
Скрыть
Re: [C] Указатель на указатель на ...> у тебя однобайтная кодировка чтоли?
В конце концов, такой пример с ** работает же: |
Скрыть
Re: [C] Указатель на указатель на ...> А, ну и вообще не делай так. Объявляй str как *str[] = {...
|
Скрыть
Re: [C] Указатель на указатель на ...это же ФАКовский вопрос, чего учебников не читаешь? |
Скрыть
Re: [C] Указатель на указатель на ...> это же ФАКовский вопрос, чего учебников не читаешь?
Вот рабочий вариант (публикую прежде всего для себя): Компилируется без ошибок и предупреждений, выводит |
Скрыть
Re: [C] Указатель на указатель на ...зойчем тебе на русском? Там всё просто. В сях нету многомерных массивов, совсем. Ты передаёшь одномерный массив, в котором каждый элемент является одномерным массивом. При адресации элемента например a[1][1] к указателю на первый элемент массива a[0][0] прибавляется смещение, то есть вычисляется сначала первый элемент "внутреннего" массива, и это смещение зависит от его ширины w: a+w*1+1. Поэтому либо ширина "внутреннего" массива должна быть задана на момент компиляции, либо просто передаёшь в функцию указатель на первый элемент, ширину массива, а в функции вместо оператора массива используешь явную арифметику указателей, то есть вместо a[1][1] так и пишешь, *(a+w*1+1). bugmaker(*)(2011-04-21 16:43:55)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.14) Gecko/20101013 Ubuntu/9.04 (jaunty) Shiretoko/3.5.14 |
|
|
|
Этот тред читают 3 пользователя: |
Анонимных: 3 Зарегистрированных: 0 |
Re: [C] Указатель на указатель на ...
Попробуй заменить "**" на "*" во втором примере