Другие языки программирования и технологии

Попытки изучить C++. Нужна подсказка.

Мне нужно задать массив A(m) m
Пример из третьего пункта -- это Си, а не С++.

> x=(int*) malloc(n*sizeof(int)); <--- эта строчка
malloc -- выделение памяти нужного размера
(int *) -- приведение типа к указателю на int
n * sizeof(int) -- n элементов умножить на размер int, получается сколько памяти нужно выделить.

> Wegemu
> cout << "Array size: "; cin >> n;
> int a[n]
Не будет работать в компиляторах от микросовта (Visual C++). Лучше:
int *a = new int[n];
или использовать std::vector
Guena Djirov
Guena Djirov
57 870
Лучший ответ
Андрей Федоровых Ваш ответ для Си++, я ошибся, мне нужно для Си.
Андрей Федоровых Понял, спасибо большое!
iostream.h вообще использовать нельзя. Он лет десять как исключен из стандарта C++ и поддерживается только старыми компиляторами. Вместо него используют iostream с явным указанием стандартного пространства имен std.
А использовать printf из stdio.h или cout из iostream - обычно проще cout, он автоматически разбирается с типами выводимых данных. Но printf позволяет в сложных случаях короче задать сложные форматы вывода и выполняется несколько быстрее.

Учитывая твой предыдущий вопрос, поясню - C++ создавался как развитие С на основе новых принципов программирования - ООП. Поэтому, сохранив старые средства С, он в большинстве случаев ввел параллельно им новые, более высокого уровня и более универсальные. Знать надо и те и другие, а чем ты будешь пользоваться вначале - безразлично, это лишь в каком порядке их учить. Когда ты освоишь и те и другие, будешь выбирать то из них, с которым писать быстрее и короче, а это уже зависит от того, что именно и в каком виде ты собираешься вводить и выводить.
Аналогично, выделение памяти заранее не известного размера в ходе работы программы, делавшееся в С как x=(int*) malloc(n*sizeof(int)); , в C++ делается проще как int *x=new int[n]; , а вообще в C++ есть типы массивов, которые сами позаботятся о выделении себе нужного размера памяти при их объявлении и использовании, для них память специальными операциями выделять не надо.
Впрочем, C тоже не стоит на месте, и в новых версиях C можно использовать и объявление типа int x[n]; , которое в стандарт C++ пока не введено, хотя некоторые компиляторы его поддерживают.
stdio.h - стандартная библиотека ввода-вывода
iostream.h - Красивая обёртка вокруг неё
Что использовать - дело ваше.

sizeof(int) - размер данных типа int в байтах
malloc(...) - Выделить нужное количество памяти и вернуть адрес
1) Для тебя видимо сложно это будет понять
2) способов сделать массив один и подключаемые файлы к нему не относятся
3) это строчка ващщще не для тех кто с++ первый раз в жизни видит

начни с просмотра книжки с++ для чайников
Берлик Астаев
Берлик Астаев
11 198
"#include <stdio.h> Это Си.
---
#include <iostream>

using namespace std;

int main()
{
int a[12];
// или
int n;
cout << "Array size: "; cin >> n;
int a[n]
return 0;
}
---
Вы Си и С++ не путайте. А то набегут труъ прогеры и оторвут вам ручки. :)

> ra
MinGW рулит. :)
Куаныш Токен
Куаныш Токен
4 950
Андрей Федоровых Вот блин, просто работаю в Microsoft Visual C++ 2010. В нем и то и то работает. Вот и запутался.
Спасибо, а как будет выглядеть такой код в Си?