Почему char функция возвращает пустое значение?

Тема в разделе "Arduino & Shields", создана пользователем Suyano, 24 июл 2020.

  1. SergeiL

    SergeiL Оракул Модератор

    Если уж и хотите функцию с возвращением указателя - можно так:
    Код (C++):
    char inputData[25] = "Hello World!";

    char * readData(char * out){
      sprintf(out, "%s", inputData);
      return(out);
    }

    void setup() {
      Serial.begin(9600);
      char output[25];
      Serial.println(readData(output));
    }
    void loop() {}
     
    Andrey12 нравится это.
  2. Asper Daffy

    Asper Daffy Иксперд

    Именно поэтому нужно брать книжку по языку и читать, а не тратить впустую время здесь. Даже если кто скажет тебе как написать правильно, понимания работы указателей от этого не прибавится.
     
    parovoZZ, SergeiL и b707 нравится это.
  3. b707

    b707 Гуру

    Потому что компилятор Си указывает вам только на ошибки синтаксиса, а смысл написанного в программе - целиком на советсти программиста. Аналогия - если вы напишете в Винворде "Карова дает малако" - винворд подчеркнет ошибки красным, но если написать "Корова дает портвейн" - никаких ошибок не будет, хотя и написана чушь :)
    Вот и в коде так же - в вашем коде из первого поста синтаксических ошибок нет, поэтому компилятор его пропускает. А то что код не работает, как вы хотели - это уже проблема ваша, а не компилятора :)
     
    SergeiL нравится это.
  4. Suyano

    Suyano Нерд

  5. SergeiL

    SergeiL Оракул Модератор

    Только книжка нужна правильная.
    С нормальным объяснением по указателям, что в памяти творится, адресации с примерами.

    Ну это далеко не книжка, но лучше чем ничего. ;)
     
  6. parovoZZ

    parovoZZ Гуру

  7. Asper Daffy

    Asper Daffy Иксперд

    Вы выбрали статью крайне безграмотного автора. Коротко глянул и от фразы: "При помощи указателей можно разбивать любые данные (переменные всех типов, структуры) на биты (битовые потоки) для последующей манипуляции с ними (передача/запись/чтение);" лысина дыбом встала.

    Возьмите нормальную книгу!