С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Zugunder
0 / 0 / 0
Регистрация: 31.05.2014
Сообщений: 24
#1

Объяснить строку объявления массива - C++

31.07.2014, 23:52. Просмотров 294. Ответов 4
Метки нет (Все метки)

Ньюанс
C++
1
int* array =  new int[m, n];
на С/C++

Пришлость мне недавно C# код в почти голый C(C++) переписывать.

Как-то прощелкал и след. выражение C#:
C#
1
int[,] TransposeMatrix = new int[m, n];
автоматом "перевел" так (неправильно):
C++
1
int *TransposeMatrix = int TType[m, n];


Оно собралось. VS2008. И даже на такой доступ не материлось:
C++
1
TransposeMatrix[2, 1] = 2;
Понятно, что работало не так, как надо. Обнаружил позже.


А правильно ведь так (одномерный массив)
C++
1
int *TransposeMatrix = int TType[m * n];
Вопрос, а что же всетаки делает int *TransposeMatrix = int TType[m, n]; ?
Что оно создает? И если собирается без ошибок компилятора, то для чего задумана подобная конструкция.
Равно как при
TransposeMatrix[2, 1] = 2; куда оно пишется?


Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2014, 23:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объяснить строку объявления массива (C++):

Объявления массива. - C++
Как увеличить количество переменных в массиве?

Объяснить строку - C++
while (strchr(S,*str)==strrchr(S,*str) ) объясните строку

Объяснить строку - C++
Что значит такая конструкция, например: k->next->prev=tmp

Инициализация массива после объявления - C++
Привет народ, нужна ваша помощь. Допустим у меня есть класс с закрытым полем-массивом: //someClass.h class someClass{ int arr;...

Функция объявления двумерного массива - C++
Данный код - объявляет двумерный массив arr. Как из этого куска кода сделать функцию? Передаваемые параметры как мне кажется n и m, а...

rand + ошибки объявления массива - C++
Здравствуйте. У меня такое задание: Используя датчик случайных чисел, заполнить элементы массива неповторяющимися числами. Вот мой код....

4
Jewbacabra
Эксперт PHP
2702 / 2290 / 854
Регистрация: 24.04.2014
Сообщений: 6,881
31.07.2014, 23:55 #2
C++
1
cout << "2, 1 = " << (2, 1);
http://msdn.microsoft.com/ru-ru/library/zs06xbxh.aspx
1
Zugunder
0 / 0 / 0
Регистрация: 31.05.2014
Сообщений: 24
01.08.2014, 00:12  [ТС] #3
func_one( x, y + 2, z );
func_two( (x--, y + 2), z );
In the function call to func_one above, three arguments, separated by commas, are passed: x, y + 2, and z. In the function call to func_two, parentheses force the compiler to interpret the first comma as the sequential-evaluation operator. This function call passes two arguments to func_two. The first argument is the result of the sequential-evaluation operation (x--, y + 2), which has the value and type of the expression y + 2; the second argument is z.


Ну и напоследок вопрос:

А применяет ли на практике кто подобное??? Практично?
Оно вероятно удобно. Но может быть источником ошибок.
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
01.08.2014, 02:07 #4
Цитата Сообщение от Zugunder Посмотреть сообщение
А применяет ли на практике кто подобное???
Очень редко. Эта вещь из разряда сомнительных.
Но перегрузка оператора "запятая" широко используется, например, в библиотеке boost::spirit. Там это вполне оправдано. Хотя кто-то саму boost::spirit в сомнительные может отнести. Поэтому тут каждый случай надо отдельно смотреть. Но ты сам правильно написал самый главный довод против:
Цитата Сообщение от Zugunder Посмотреть сообщение
может быть источником ошибок.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.08.2014, 12:07 #5
Цитата Сообщение от Zugunder Посмотреть сообщение
А применяет ли на практике кто подобное???
Оператор запятая (в своем исходном, т.е. не перегруженном виде) используется например в циклах:
C++
1
for( int i=5, j=10; i<10; ++i, ++j)
в тернарном операторе:
C++
1
    return v ? g(), 42 : 100500;
1
01.08.2014, 12:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2014, 12:07
Привет! Вот еще темы с ответами:

Объяснить строку кода - C++
#pragma comment ( linker, &quot;/EXPORT:MyFunc=_MyFunc@8&quot; ) Объясните, что мы делаем этим. Не уверен, что совсем понял.

Прошу объяснить первую строку - C++
Здравствуйте, я прохожу на данный момент перегрузку операторов, в общем по теоретическому материалу я сейчас перегружаю оператор + в...

Объяснить и прокомментировать каждую строку кода - C++
Добрый вечер нуждаюсь в комментариях к программе , желательно прокомментировать каждую строку. #include &quot;stdafx.h&quot; #include...

Объяснить почему указатель выводит всю строку сразу, а не адрес первого элемента - C++
Всем привет :) Начал изучать сей замечательный язык и появились кое-какие вопросы к гуру! Запутался в указателях... ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.