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

> Вопрос про си
Dark
сообщение 14.05.2003 23:40
Сообщение #1


Знаток
****

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

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


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


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


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

 



- Текстовая версия 29.06.2024 10:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"