На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL, ALXR
Страницы: (20) « Первая ... 17 18 [19] 20  все  ( Перейти к последнему сообщению )  
> Как вы относитесь к паскалю? , (есть гипотеза)
   
Как вы относитесь к паскалю?
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Цитата MyNameIsIgor @
    Смотря какое определение у "динамического массива".

    Массив, размер которого задается/меняется в рантайме?
      Цитата D_KEY @
      Массив, размер которого задается/меняется в рантайме?

      Ну, в таком случае не будет, потому что у нас не массив, а указатель.
        Цитата MyNameIsIgor @
        Цитата D_KEY @
        Массив, размер которого задается/меняется в рантайме?

        Ну, в таком случае не будет, потому что у нас не массив, а указатель.

        Это с точки зрения типизации сишной. Так с ее точки зрения в Си вообще нет динамических массивов.
          Цитата D_KEY @
          Это с точки зрения типизации сишной. Так с ее точки зрения в Си вообще нет динамических массивов.

          Ага, нет.
            Цитата jack128 @
            В чем по твоему отличие стат массивов в дельфе от сишных ? Я что то вообще отличий не вижу.
            А нету их. Неудивительно, что не видишь. Разница есть между статическими и динамическими. Причём одинаковая в обоих языках.
              Цитата MyNameIsIgor @
              Ага, нет.


              так лучше бы и синтаксиса не было.
              Ну согласись, пи***ц же:

              ExpandedWrap disabled
                #include <iostream>
                using namespace std;
                 
                void f(int x[]){
                    cout << sizeof(x) << endl;
                }
                int main() {
                    // your code goes here
                    int x[] = {1,2,4};
                    cout << sizeof(x) << endl;
                    f(x);
                    return 0;
                }




              Цитата Qraizer @
              Разница есть между статическими и динамическими. Причём одинаковая в обоих языках.

              ну вот Си ные товарищи говорят, что в С нету дин массивов. А дельфи есть. Так что разница разная ;-)
              Сообщение отредактировано: jack128 -
                Цитата jack128 @
                Ну согласись, пи***ц же:

                Так массивы неявно всегда в указатель преобразуются. Та же операция индексации определена в терминах указателей, а на массивы распространяется как раз из-за такого преобразования.
                  Цитата jack128 @
                  так лучше бы и синтаксиса не было

                  А синтаксиса и нет...
                  Цитата jack128 @
                  Ну согласись, пи***ц же

                  У массивов много странного, да. Таков уж C :D

                  Добавлено
                  Цитата jack128 @
                  ну вот Си ные товарищи говорят, что в С нету дин массивов.

                  В C то есть :lol:

                  Добавлено
                  Цитата OpenGL @
                  Так массивы неявно всегда в указатель преобразуются. Та же операция индексации определена в терминах указателей, а на массивы распространяется как раз из-за такого преобразования.

                  Первое предложение верно (если убрать "всегда"). А вот второе... как минимум непонятно.
                  Сообщение отредактировано: MyNameIsIgor -
                    Ошибаешься, jack128. А ну-ка, компильни:
                    ExpandedWrap disabled
                        VAR arr1: ARRAY OF Integer;
                       
                        PROCEDURE proc(VAR arr: ARRAY OF Integer);
                        BEGIN
                          SetLength(arr, 100)
                        END;
                       
                      BEGIN
                        proc(arr1);
                        SetLength(arr1, 100)
                      END.
                    "Как так??", спросит у тебя студент, изучивший открытые массивы и перешедший к динамическим. Что ты ответишь? "Ну это ж разные типы-то." Я угадал? А студентик сам догадается переписать?
                    ExpandedWrap disabled
                        TYPE DynArray = ARRAY OF Integer;
                        VAR  arr1: DynArray;
                       
                        PROCEDURE proc(VAR arr: DynArray);
                        BEGIN
                          SetLength(arr, 100)
                        END;
                       
                      BEGIN
                        proc(arr1);
                        SetLength(arr1, 100)
                      END.
                    А физиономия у него какая при этом будет? "Ну это надо просто запомнить." © Вот это - трындец, да.
                    А в С/Плюсах всё в порядке, никаких трындецов. Разные сущности и выглядят по-разному. Мне что-то кажется, лучше б в Дельфях синтаксиса не было.
                      Цитата MyNameIsIgor @
                      А вот второе... как минимум непонятно.

                      За что купил - за то и продаю :-? В этой теме Qraizer говорил именно об этом.
                        Цитата OpenGL @
                        В этой теме Qraizer говорил именно об этом.

                        Да, странно. Qraizer прокомментирует. Индексация хоть и определена в терминах указателей, но я всегда считай, что у массивов, как у встроенного типа, есть оператор индексации, и преобразование к указателю здесь ни при чём.
                          Qraizer Убедил.

                          ЗЫ Это jack128
                          Сообщение отредактировано: Rouse_ -
                            Цитата MyNameIsIgor @
                            и преобразование к указателю здесь ни при чём.

                            А как же 10[arr] равнозначное arr[10]? Хотя надо в стандарте глянуть.
                              MyNameIsIgor, нету. Зачем? Операция индексирования определена через сложение и разыменование, каковые определяются для указателей, а массивы умеют кастоваться в указатели, причём в весьма "приоритетном" порядке. Там в 4 Standard conversions в 1) и 2) прямо об этом сказано.
                              D_KEY, не надо смотреть. Будучи определённой через сложение, каковое, как известно, коммутативно, эта симметрия вытекает сама собой. Да и вообще, там явный коммент есть:
                              Цитата 8.3.4 Arrays
                              6 Except where it has been declared for a class (13.5.5), the subscript operator [] is interpreted in such a way that E1[E2] is identical to *((E1)+(E2)). Because of the conversion rules that apply to +, if E1 is an array and E2 an integer, then E1[E2] refers to the E2-th member of E1. Therefore, despite its asymmetric appearance, subscripting is a commutative operation.
                              Сообщение отредактировано: Qraizer -
                                Цитата Qraizer @
                                D_KEY, не надо смотреть... там явный коммент есть

                                ;)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1608 ]   [ 19 queries used ]   [ Generated: 27.07.26, 09:09 GMT ]