Форум программистов, компьютерный форум CyberForum.ru

Массив строк - C++

Восстановить пароль Регистрация
 
Sasuke
 Аватар для Sasuke
0 / 0 / 0
Регистрация: 09.10.2009
Сообщений: 89
15.03.2010, 22:10     Массив строк #1
Извините меня, за такой глупый вопрос, но я почему то не могу понять это словосочитание. Правильно ли я понимаю - это двумерный массив?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2010, 22:10     Массив строк
Посмотрите здесь:

C++ Ввод нескольких строк или массив строк
Массив строк как массив указателей на массивы чаров C++
Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк C++
Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена C++
Запросить название учебного заведения, специальность и номер группы. записав их в массив из 3 строк. Подсчитать длины каждой строк C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 22:23     Массив строк #2
Правильно.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
15.03.2010, 22:29     Массив строк #3
С точки зрения C массив строк это массив указателей на стоки. Смотри
C++
1
   char* massiv []= {"stroka_1","stroka_2", "stroka_2"};
Это типа массив строк. Но только типа!
ЕСли ты посмотришь на этот массив в отладчике, то обнаружишь, что он представляет из себя всего три ячейки памяти! Ну, например, так:

1234 5666 6767

Вот и весь массив
КАждая ячейка содержит адрес строки. То есть stroka_1 расположена по адресу 1234, stroka_2 по адресу 5666, stroka_3 по адресу 6767

КАк правило эти адреса идут подряд. Но я встречал и имено,так, вразнобой.

Добавлено через 55 секунд
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Правильно.
Нет, неправильно, не сбивайте людей с толку.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 23:13     Массив строк #4
Нет, неправильно, не сбивайте людей с толку.
Ты говоришь про меня без основательно,
Ты привёл массив указателей на строки и всё.

Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
 
 
int main(){
char matrix[10][10] = {
"Ignat",
"Sergey",
"ISergey",
 
"Petr",
"Pavel",
"Tom",
 
"DDD",
"sss",
"aaaaa",
"vvv"
};
 
unsigned int i,j;
for(i=0;i<10;i++){
    for(j=0;j<matrix[i][j]!='\0';j++){
if(matrix[i][j]!='\0')printf("%c ",matrix[i][j]);
    }
printf("\n");
 
}
printf("\n");
//Второй способ
for(i=0;i<10;i++){
    for(j=0;j<strlen(&matrix[i][0]);j++){
printf("%c ",matrix[i][j]);
    }
printf("\n");
 
}
 
 
 
return 0;
}
Добавлено через 1 минуту
kravam:
Не надо сразу делать выводы.

Добавлено через 11 минут
Одно есть преимущество если использовать массив указателей:
сортировка не требует перезаписи между строками, просто указатели пере наводятся.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
15.03.2010, 23:21     Массив строк #5
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Ты привёл массив указателей на строки и всё.
Странно получается.
Я привожу массив указателей на строки, но массивом строк его не называю. ПО определению просто он таковым не является.
Вы приводите массив символов, но называете его массивом строк.

Что-то поменялось в этом мире, а мене не предупредили...
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 23:23     Массив строк #6
Матрица содержит десять строк типа char и вмещает 9 символов + '\0' в каждую строку.
ISergey
15.03.2010, 23:25
  #7

Не по теме:

Цитата Сообщение от Genius Ignat Посмотреть сообщение
C++
1
"ISergey",
Опа.. спалился

Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
15.03.2010, 23:33     Массив строк #8
И массив указателей который ты привел тоже верно.

Добавлено через 4 минуты
В твоем случае обратится к каждой строке можно так:
massive[номер указателя на какую то строку][номер индекс символа в строке на которую ссылается ук-ль].
Всё логично, но мой же способ тоже входит в понятие массива строк,
так как строка это массив символов типа char и WCHAR ,
А массив строк , получается матрица(массив массивов).

Добавлено через 2 минуты
А мне вообще по логике нравится так:
string str_m[20]; //библиотека вот так.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
15.03.2010, 23:37     Массив строк #9
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Матрица содержит десять строк типа char и вмещает 9 символов + '\0' в каждую строку.
Это я понял.
Вот ВЫ рассказали, что исз себя представляет матрица по сути? Да. Вот пусть она таковой и остаётся.
А массив указателей пусть остаётся массивом указателей. С известными оговорками и то и другое можно назвать массивом строк, но зачем?

МАло путаницы что ли?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
16.03.2010, 01:54     Массив строк #10
Любая строка это массив символов, и не важно указатели используются или статический массив.
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2010, 13:41     Массив строк #11
kravam, привет! У меня ДЕВ С++. Хотел спросить что такое отладчик и как им пользоваться? (Никогда им не пользовался) Хочу посмотреть эти самые адреса на строки!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2010, 19:32     Массив строк
Еще ссылки по теме:

C++ Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.
C++ Добавление неодинаковых строк в массив строк
C++ Вводится массив строк текста с неизвестным заранее количеством строк

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
16.03.2010, 19:32     Массив строк #12
Перечёл ещё раз правила, вроде я ничего не нарушаю
http://www.wasm.ru/article.php?article=ollydbg01

...А отладчик, встроенный в DEV C++ мне никогда не нравился, да и не отладчик это вовсе, а просто возможность ПОШАГОВОГО исполнения, к тому же очень глюкавая возможность. Я отлично её реализую по-совему, в места остановки программы пихая printf ("lubaya stroka"); getchar ();
Yandex
Объявления
16.03.2010, 19:32     Массив строк
Ответ Создать тему
Опции темы

Текущее время: 16:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru