Указатели

Тема в разделе "LANGS.C", создана пользователем XshStasX, 4 янв 2011.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    double sum(double *m,int n){
    m+=n
    };

    Указатель m будет увеличен на n элементов в языке С ?
     
  2. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    а самому проверить сложно?
     
  3. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    InsidE
    А ответить сложно ?

    У меня нет С, только С++...
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    еще можно сразу прочитать учебник, и не создавать тем с неумными вопросами.

    если очень хочется проверить что-то на "С" - есть codepad.org , ideone.com , etc
     
  5. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    XshStasX
    как это?
     
  6. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    В общем итоге ясен.

    qqwe
    Microsoft Visual Studio 2008

    Было очень забавно когда оказалось что один из компиляторов С различает перегруженные функции только по размеру параметров.
    Вот чтоб подобного подобного нежданчика не было решил поинтересоваться.
     
  7. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    XshStasX
    непонятно. можно пример и что за компилятор?

    чего вы решили, что оно С не умеет?
     
  8. Sasha7b9

    Sasha7b9 New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2010
    Сообщения:
    105
    Поясняю - там если расширение файла .c - компилируется как с, а если .cpp - компилируется как с++. Вот такая загогулина.

    Вообще, интересно наблюдать, как некоторые, вместо того, чтобы коротко по делу ответить, предпочитают на протяжении нескольких постов упорно отмалчиваться, попутно доказывая собеседнику его невежество. Ну как интересно. Непонятно, что движет этими людьми. Приходит на ум только одна причина - желание поднять свою мнимую продвинутость за счёт других.
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    XshStasX

    m + n = &m[n]
     
  10. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    Sasha7b9
    вообще то делать неправильные выводы похуже чем
     
  11. NeuronViking

    NeuronViking New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2004
    Сообщения:
    476
    Адрес:
    где-то в Сиднее
    не совсем точно. все зависит от ключика языка компиляции, который можно менять независимо от расширения файла =) просто так исторически сложилось, что расширение .cpp подразумевает плюсовый код.
     
  12. Sasha7b9

    Sasha7b9 New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2010
    Сообщения:
    105
    InsidE
    Загадками говорите, коллега.
    NeuronViking
    Возможно. Только ключик у каждого компилятора свой, видимо. А определение по расширению - способ универсальный.
    Ждём специалиста, который точно всё разъяснит.
     
  13. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Для того, чтобы ответить на этот вопрос, не нужно быть специалистом. Достаточно посмотреть в свойство .c / .cpp в проекте под названием "Compile As..." с двумя возможными опциями. Надеюсь что понятно, с какими именно.
     
  14. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    > адеюсь что понятно, с какими именно.
    C# и VB.NET?
     
  15. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
  16. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    _DEN_
    И всё же не совсем ответ полный, наверное. Как обстоят дела в случае компиляции из командной строки без указания параметра /TP или /TC? Наиболее очевидный ответ - проверь сам, конечно) Я и проверил. Вот этот текст:
    Код (Text):
    1. class A {
    2. };
    3. int main() {
    4. A a;
    5. return 0;
    6. }
    , сохранённый в файле с расширением .cpp, компилируется, а с расширением .c - не компилируется. А вы говорите, "Compile As..."
     
  17. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    qqwe
    В общем компилятор от WDK 7
    был такой код:
    Код (Text):
    1. VOID MyProc(ULONG p){
    2. };
    3. VOID MyProc(PUNICODE_STRING str){
    4. };
    Так компилятор или линкер(уже не помню) ругались на эти функ.
    Если же сделать вот так:

    Код (Text):
    1. VOID MyProc(CHAR p){
    2. };
    3. VOID MyProc(PUNICODE_STRING str){
    4. };
    то все ок.

    В итоге пришлось сделать вот так:
    Код (Text):
    1. VOID MyProc(ULONG p){
    2. };
    3. VOID MyProcStr(PUNICODE_STRING str){
    4. };
    С этого и вывод был:
     
  18. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    _DEN_
    спасибо
     
  19. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Во всех компиляторах *.с по умолчанию компилируется как Си, *.срр - как С++
    Остальное задаётся ключами компиляции/параметрами проекта.

    Не хочу тебя расстраивать, но в Си вообще нету и быть не может перегруженных функций.
    И компилятор их никак не различает.
     
  20. phprus

    phprus New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2006
    Сообщения:
    16
    XshStasX
    Типов ULONG и PUNICODE_STRING ни в С, ни в С++ нет. Это #define'ы. Внимательно посмотри, во что разворачиваются ULONG и PUNICODE_STRING, и если они разворачиваются в один базовый тип, то компилятор видит две абсолютно одинаковые функции.

    Обновление:
    Прошу прощения, не внимательно прочитал вопрос и не заметил, что изначальный вопрос про С.
    В С перегрузки функций никогда не было. Вышесказанное про раскрытие #define справедливо для перегрузок в С++.