• pancake
    link
    fedilink
    arrow-up
    5
    ·
    3 years ago

    It could also modify memory. If the function writes to a global variable or to an address passed as a parameter, then it makes a difference. For example, would you say the void function ‘free()’ is useless?

  • tofuwabohu@lemmy.161.social
    link
    fedilink
    arrow-up
    3
    ·
    3 years ago

    You use functions to extract code that does a specific thing to encapsulate it. So when you want to do a specific thing at three different places in your program, you don’t need to write the same code three times but you call the function. It avoids redundancy and this is easier to maintain (only one place to fix stuff).

  • HMH
    link
    fedilink
    arrow-up
    2
    ·
    3 years ago

    Side effects, it could print something for example.

  • Lightbritelite
    link
    fedilink
    arrow-up
    1
    ·
    3 years ago

    This thread is great, it’s asking a question i didn’t know to ask, and giving answers that are clarifying years of my own mistakes

  • the_tech_beastOP
    link
    fedilink
    arrow-up
    1
    ·
    3 years ago
    #include <iostream>
    using namespace std;
    void sum()
    {
        int a, b, s;
        cin >> a >> b;
        s = a + b;
        cout << s;
    }
    int main()
    {
        sum();
    }
    

    Also why does this function return a value?

    for example, a = 45 and b = 45

    I get the sum as 90

      • the_tech_beastOP
        link
        fedilink
        arrow-up
        1
        ·
        3 years ago

        yes but sum() gives the value 90 in the main function. Why is that?

          • the_tech_beastOP
            link
            fedilink
            arrow-up
            2
            arrow-down
            1
            ·
            3 years ago

            Oh… so cout << and return don’t mean the same thing.

            • tmpod@lemmy.pt
              link
              fedilink
              arrow-up
              5
              ·
              3 years ago

              No. Printing something to the console (pushing something to cout with the << operator) is not the same as returning a value.

              Think of returns like what you have in math. When you have a function, let’s say

              int double(int n) {
                  return 2 * n;
              }
              

              that returns an int, calling it will “replace” the expression with its result, much like in math. So in this instance, doing 3 + double(2) would be like doing 3 + 4. Math is the same way; if you have a function, f(x) = 2x, doing 3 + f(2) would be the same as doing 3 + 4.

              Printing to the console involves doing I/O (input/output), and actually writing a string to a file, which then the terminal can display.

            • ChinaNumberOne
              link
              fedilink
              arrow-up
              5
              arrow-down
              1
              ·
              3 years ago

              don’t know if you are a beginner to programming in general or c/c++ specifically but it’s better to start with c before c++, it’s simpler and clearer (than c++) to a beginner

              then cout syntax is absolutely horrible and very misleading, use c’s printf or, if you can, use fmt, it’s super fast and even simpler than c’s printf

              • glibg10b
                link
                fedilink
                arrow-up
                2
                ·
                1 year ago

                If you want to learn C++, you should start with C++. Starting with C will form unsafe habits and teach unsafe paradigms that have been replaced by language features or parts of the C++ standard library

                it’s simpler and clearer (than c++) to a beginner

                A language only seems as clear as the tutorial used to teach it. If you think the basics of C++ can be better taught using a C tutorial,. you’ve been looking at the wrong C++ tutorials. Transitioning from C to C++ will be a confusing process for a beginner

            • LunaticHacker
              link
              fedilink
              arrow-up
              2
              ·
              3 years ago

              Of course they aren’t the same. try to achieve the same output with int sum() instead of void sum() this small exercise will help you understand the difference