IPB
ЛогинПароль:

> Вопрос про си
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Люди, приведите мне пожайлуста 10 отличий си от паскаля(не касаясь синтаксиса)... А то передо мной стоит дилема: изучать си или нет, но я не вижу разницы между си и пасом!!!!!!!!!


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 149

Репутация: -  1  +


Цитата
Диалект Си сплошное изврашение, особо после Паскаля.

Pascal+Asm=Rulez.

А ты у нас типа знаток всех диалектов, всех языков.... вот и пиши все на Паскале, ты на нем наверное и разговариваешь... ???
Не хочешь учить - не надо, тебя ни кто не заставляет. >:(
Ты бы не позорился своими заявлениями, до того как сам разберешся, да же написать правельно не смог, Си - это язык, а не диалект.

Любой язык+Asm=Rulez.

Добавлено позже:
Цитата
Q4: А как же тогда деление не нацело!!

Q5: Раскажи про указатели их использование и на кой они нужны,

Q6: динамическую память и использование ее для массива произвольной размерности(в пределах 64 kb). А то эту темц я не очень провариваю!

A4:
Тут все еще проще, если в операции учавствует число не типа int, то и результат будет не типа int.

A5:
Указатель - это особый тип переменной, он содержит адрес какой-то переменной обычного типа. Создается он например так:
int *ukazatel;
звездочка обозначает, что переменная ukazatel является типом "указатель", а int, что она будет указывать на переменную типа int. Допустим, у нас есть переменная peremennay типа int:
int peremennay;
со значением 123,
peremennay = 123;
зделаем так, что бы наш указатель указал на нее, для этого есть операция "&"
ukazatel = &peremennay;
если теперь мы посмотрим на значение нашего указателя, то оно будет похожим на подобие этого, 0x0012FE20
это число на самом деле не число (результат абстракции), а адрес в памяти, где лежит начало переменной на которую мы указываем.
Теперь мы можем обратиться к нашему числу 123 двумя способами.
Так peremennay -= 23; или так *ukazatel -= 23; все с то же зведочкой,
в обоих случаях наша переменная будет содержать число 100.

С помощью указателей можно создать безымянную/динамическую переменную, для этого есть операция new,
int *uk;
uk = new int;

к стате можно писать сразу так
int *uk = new int;
теперь указатель uk указывает (содержит адрес памяти где начало) на переменную типа int не имеющию названия/имени.
Для того, что бы освободить память (вернуть в кучу) от не нужной нам больше переменной, есть операция delete, например delete uk

Так как переменные различних типов и тем более целые структуры занимают по нескольку (теоритически сколько угодно много) ячеек памяти, то представте сколько займет времени у процессора, что бы к примеру передать какую либо большую структуру/переменную в какую-то функцию, да еще и получить обратно новое значение.
Если функция работает один раз, то это еще ничго, а если 10....100 тысяч раз?
Как выход из положения и существуют указатели, они каротки, и в функции передаются значительно быстрей,т.к. содержат только адреса начал нужных структур/переменных, а не непосредственно грамоздкие структуры/переменные.

Переменные обозначающие обычные массивы отличаются тем, что они всегда являются указателями на первый элемент данного массива.

Динамические массивы создаются точно так же:
int *arr = new int[100];
создали указатель на переменную типа int и присвоили ему значение адреса первого элемента из 100 элементов типа int. Для того, что бы освободить память используется таже операция delete, но теперь со скобками, что обозначает, что мы хотим удалить весь массив, а не, только первый элемент,
delete [] arr;

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

Над указателями можно проводить арифметические операции, например:
double *arr = new double[20];
значением arr будет адрес в памяти, например 0x0012FE31 указывающий на первый элемент массива, т.е. arr[0],
после операции arr + 1 или, что то же самое arr++,
arr будет указывать на следующий элемент массива arr[1], но адрес будет другим, 0x0012FE39, т.к. эти операции не просто тупо увеличивают адрес на единицу, а в зависимости от типа значений массива на нужное число байт.

Размерность массива может быть любой, т.к. мы работаем с указателями.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Dark   Вопрос про си   15.05.2003 3:40
Deny   Re: Вопрос про си   15.05.2003 13:54
___ALex___   Re: Вопрос про си   15.05.2003 19:40
Deny   Re: Вопрос про си   15.05.2003 22:20
___ALex___   Re: Вопрос про си   15.05.2003 22:53
Deny   Re: Вопрос про си   15.05.2003 23:18
mj   Re: Вопрос про си   16.05.2003 0:03
Dark   Re: Вопрос про си   16.05.2003 3:52
Alesha_GA   Re: Вопрос про си   16.05.2003 8:40
Deny   Re: Вопрос про си   16.05.2003 14:27
Alex   Re: Вопрос про си   16.05.2003 14:48
Slam   Re: Вопрос про си   16.05.2003 19:58
Deny   Re: Вопрос про си   16.05.2003 20:48
mj   Re: Вопрос про си   16.05.2003 21:24
___ALex___   Re: Вопрос про си   16.05.2003 21:40
Deny   Re: Вопрос про си   16.05.2003 21:55
Dark   Re: Вопрос про си   17.05.2003 3:24
Alex   Re: Вопрос про си   17.05.2003 12:59
Deny   Re: Вопрос про си   17.05.2003 15:45
Alesha_GA   Re: Вопрос про си   19.05.2003 6:19
Alex   Re: Вопрос про си   19.05.2003 18:42
Deny   Re: Вопрос про си   19.05.2003 20:24
mj   Re: Вопрос про си   20.05.2003 3:20
Alesha_GA   Re: Вопрос про си   20.05.2003 4:00
Dark   Re: Вопрос про си   20.05.2003 5:25
Deny   Re: Вопрос про си   20.05.2003 7:14
Dark   Re: Вопрос про си   21.05.2003 4:18
AlaRic   Re: Вопрос про си   21.05.2003 10:06
Deny   Re: Вопрос про си   21.05.2003 15:20
Alex   Re: Вопрос про си   21.05.2003 16:25
AlaRic   Re: Вопрос про си   21.05.2003 17:54
Noname   Re: Вопрос про си   21.05.2003 18:34
AlaRic   Re: Вопрос про си   21.05.2003 19:10
Deny   Re: Вопрос про си   21.05.2003 21:42
Alex   Re: Вопрос про си   21.05.2003 21:52
Deny   Re: Вопрос про си   21.05.2003 22:13
Dark   Re: Вопрос про си   22.05.2003 5:33
Deny   Re: Вопрос про си   22.05.2003 15:12
Alex   Re: Вопрос про си   22.05.2003 17:42
GLuk   Re: Вопрос про си   24.05.2003 1:55
Shadow   Re: Вопрос про си   24.05.2003 2:00
Deny   Re: Вопрос про си   24.05.2003 2:23
Alex   Re: Вопрос про си   24.05.2003 14:41
Noname   Re: Вопрос про си   28.05.2003 10:34
GLuk   Re: Вопрос про си   28.05.2003 20:28
Shadow   Re: Вопрос про си   28.05.2003 21:55
GLuk   Re: Вопрос про си   28.05.2003 23:18
Deny   Re: Вопрос про си   29.05.2003 0:28
AlaRic   Re: Вопрос про си   29.05.2003 22:57
Deny   Re: Вопрос про си   29.05.2003 23:19
Alex   Re: Вопрос про си   2.06.2003 12:02
mj   Re: Вопрос про си   3.06.2003 21:05
GLuk   Re: Вопрос про си   3.06.2003 21:39
Deny   Re: Вопрос про си   3.06.2003 23:16
Altair   Re: Вопрос про си   5.02.2004 13:56
UtaH   Re: Вопрос про си   5.02.2004 15:48
dushik   Re: Вопрос про си   8.02.2004 9:56
GLuk   Re: Вопрос про си   9.02.2004 11:10
P@sh@   Re: Вопрос про си   10.02.2004 10:01
Altair   Re: Вопрос про си   12.02.2004 9:35
Atos   Re: Вопрос про си   14.02.2004 8:40
Свят   Сорри за оффтоп, но я как за си, так и за паскаль.…   8.12.2011 0:16
Rian   Все время учил делфи, писал на нем, но реально уст…   10.12.2011 0:26


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 7:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name