powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не пойму как работать с массивом
25 сообщений из 28, страница 1 из 2
Не пойму как работать с массивом
    #32296692
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пойму почему не работает...
вроде все правильна, только вот не компелируется, может подскажет кто что тут к чему

char cc1[1000];

&cc1="ssss";
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296701
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
char * c = new char[1000]

c = "Test"

...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296710
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или
Код: plaintext
1.
2.
 char cc1[ 1000 ]= "ssss" ;
 strcpy(cc1, "ssss" );
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296711
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На выбор:

1)
Код: plaintext
1.
char cc1[ 1000 ]; 
strcpy(cc1,  "ssss" );


2)
char cc1[1000] = "ssss";

3)
char cc1[1000] = {'s', 's' , 's', 's', '\0'}

4) если в дальнейшем не будем менять сс1, то можно и так:
const char *cc1 = "ssss";
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296712
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и так мона ...
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296713
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeart,
Compiler Error C2146
syntax error : missing ';' before identifier 'с'


Код: plaintext
1.
2.
char * c = new char[ 1000 ]; 

c =  "ssss" ; 
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296715
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>char * c = new char[1000]
>c = "Test"

Извини, но это бред.
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296728
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{

	char * c = new char[ 1000 ]; 
	printf( "%d\n" ,c);
	c =  "ssss" ; 
	printf( "%d\n" ,c);
	return  0 ;
}


сосмотри что ты написал, валенок
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296737
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему

char cc1[1000] = "ssss"; проходит

а

char cc1[1000] ;
cc1[1000] = "ssss";


не проходит
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296741
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нда...
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296743
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что ты пытаешься записать в 1000 элемент типа char (кстати, это выход за пределы диапазона) значение типа const char*.

Вообще, тебе нужно обратиться к хорошей литературе.
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296754
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мдя-я-я,
что творится-то...

JS, ты че там такое выдал? Ты хоть сам-то понял?
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296763
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лана, ток без обид)

char *c=new char[1000]; - это ячейка памяти (для интела размером 4 байта), которая указывает на массив в памяти размером 1000 байтов;

Перефразирую - в ячейке с - одержится адрес массива в 1000 байт;
а когда ты делаешь c="somthing";
то у тебя в ячейке c будет уже адрес другого клочка памяти,
где находицца строка "somthing";
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296767
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык и теперь понятно блина стало,
а то тут блина уже все накинулись...
Нда..., валенок...
и все в этом духе...

я же только начал писать,
если бы на PL\SQL то я бы за 5 мин все сделал бы...
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296772
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лады, малость можно и ответить:

в С++ предусмотрена операция копирования простых типов, а так же конструктор копирования агрегатных типов.

массивы С++ не копирует.

автор писал:а почему
char cc1[1000] = "ssss"; проходит
потому что это способ инициализации массива, аналогичен следующему:
char cc1[1000]={ 's', 's', 's', 's', 0 };

автор писал:a
char cc1[1000] ;
cc1[1000] = "ssss";
не проходит
а здесь ты пытаешься копировать массивы? но эта операция не определена в С++.

Вопрос на сообразительность (только знатокам чур не отвечать), а почему операция копирования массивов не определена? казалось бы, - не так уж и сложно это встроить в компилятор?
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296793
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе ничего этому не мешает, просто недачет языка программирования. могли бы сделать и так (нет никаких ограничений для этого)

В строках может быть символ окончания строки не пропишет да и все...
а остальное - недочет
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296832
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle писал:недочет
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296900
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да нет, нет недочета...
все проще:

char c[1000];
char *c1="dddd";

далее:
с1=c; // копирование указателя на начало массива,
// в С++ массив представляется адресом первого элемента, такова семантика
*с1=*с; // копирование первого символа

т.е., с1 указывает на массив, но нет синтаксической возможности указать, что копируется именно массив, а не указатель на него или не один элемент массива.

но это еще ладно, а как ты относишься к тому, что в паскале, если забудешь поставить в параметрах процедуры var будет скопирован весь массив? :)
т.е. может оно и хорошо, что массивы не копируются.

а скопировать два одинаковых массива можно всегда так:

Код: plaintext
mymcpy(dst, src, sizeof(dst));
причем, в последних версиях VC++ этот memcpy разворачивается в inline ассемблерную последовательность.
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296909
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Крута, хотя мне кажется что Cauchy об этом и не догадывался...
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296937
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, такое дело, после PL/SQL

ты же обрати внимание, что все эти указатели непосредственно в память указывают, прямо как в ассемблере. :)

так что это, аккуратнее...
границы диапазонов не проверяются - у памяти нет (почти нет) диапазонов.
т.е. смотри за ручками, когда писать будешь...
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296960
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle писал:Крута, хотя мне кажется что Cauchy об этом и не догадывался...
Ну как же, я хоть и начинающий сишник, но все же книжки читаю немного.
Ведь об этом в самом начале описания массивов рассказывается.
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296963
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати сейчас на конторе с умными людьми поговорил (имеются у нас тоже умные люди) дык они сказали что массивы с С++ это вообще понятие такое виртуальное, на самом деле нет там никаких массивов, а просто есть операция а [] - которая прибавляет к указателю число в скорбках * на размер в одной записи....

Oracle 17.10.2003
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32296967
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Cauchy вот ты крутой такой, книги читаешь...
а мне так сказать помочь не хочешь, сбросил бы ссылку какую на книжку, вместет бы с тобой разбирались , проще бы было, а потом еще вместе в загранку, на канары соскачли и работали бы там...
...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32297009
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще то в Builder C++ такая вещь прокатывает ...
естесно можно сделать и по другому .

я написал то что мне первое пришло в голову ...

а поконкретней чем такая запись неверна ???

char * c = new [100];

...
Рейтинг: 0 / 0
Не пойму как работать с массивом
    #32297012
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну какой я крутой...
А засмеялся я не над тобой. Просто я раньше программил на Delphi и чем больше изучаю C++, тем больше убеждаюсь в том что недочеты как раз в паскале, а в C++ одни плюсы :). Плюсы в смысле расширения возможностей.
А книжка у меня бумажная и ссылку на нее я бы рад кинуть, да наука до таких чудес еще не дошла
.
Книжка называется:
Р. Лафоре "Объектно-ориентированное программирование в С++",4-е издание, серия "классика computer science" издательство "Питер" .

Кстати там в конце книги написано, что есть представительство издательства в Минске (но наверное для оптовиков).
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не пойму как работать с массивом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]