Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Troubleshooting
  3. Dynamic change of variable name

Dynamic change of variable name

Scheduled Pinned Locked Moved Troubleshooting
14 Posts 7 Posters 587 Views 6 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    Greg_2502
    wrote on last edited by
    #1

    Hi, I can't find a solution to my problem.
    I'd like to change the name in a function in a for loop. If it is possible?

    for (i=1; i<5; i++){
    int value[i] = debouncer[i].read();
    }
    
    YveauxY 1 Reply Last reply
    0
    • alowhumA Offline
      alowhumA Offline
      alowhum
      Plugin Developer
      wrote on last edited by
      #2

      Not to my knowledge.

      Generally you'd create a function that takes an input value, and change that?

      1 Reply Last reply
      0
      • G Greg_2502

        Hi, I can't find a solution to my problem.
        I'd like to change the name in a function in a for loop. If it is possible?

        for (i=1; i<5; i++){
        int value[i] = debouncer[i].read();
        }
        
        YveauxY Offline
        YveauxY Offline
        Yveaux
        Mod
        wrote on last edited by
        #3

        @greg_2502 do you mean to fill an array?
        Something like

        int value[5];
        for (i=1; i<5; i++){
          value[i] = debouncer[i].read();
        }
        

        http://yveaux.blogspot.nl

        skywatchS 1 Reply Last reply
        0
        • YveauxY Yveaux

          @greg_2502 do you mean to fill an array?
          Something like

          int value[5];
          for (i=1; i<5; i++){
            value[i] = debouncer[i].read();
          }
          
          skywatchS Offline
          skywatchS Offline
          skywatch
          wrote on last edited by
          #4

          @yveaux Shouldn't that be int value[4]; ? ;)

          mfalkviddM 1 Reply Last reply
          0
          • skywatchS skywatch

            @yveaux Shouldn't that be int value[4]; ? ;)

            mfalkviddM Offline
            mfalkviddM Offline
            mfalkvidd
            Mod
            wrote on last edited by
            #5

            @skywatch not if the 0th position is skipped

            skywatchS 1 Reply Last reply
            1
            • mfalkviddM mfalkvidd

              @skywatch not if the 0th position is skipped

              skywatchS Offline
              skywatchS Offline
              skywatch
              wrote on last edited by
              #6

              @mfalkvidd Hehehe...... ;)

              But i starts at 1 yes? and then increments in interger units whilst it is less than 5. So that should give 1,2,3,4. Or have I been under a misunderstanding?

              mfalkviddM 1 Reply Last reply
              0
              • skywatchS skywatch

                @mfalkvidd Hehehe...... ;)

                But i starts at 1 yes? and then increments in interger units whilst it is less than 5. So that should give 1,2,3,4. Or have I been under a misunderstanding?

                mfalkviddM Offline
                mfalkviddM Offline
                mfalkvidd
                Mod
                wrote on last edited by
                #7

                @skywatch arrays indexes in c/c++ always start at 0.
                int myarray[5] would have positions 0 thorugh 4. Position 5 would be outside the array. In the code above, position 0 is never used.

                So either make the array 1 element larger than actually needed (with position 0 unused), or let i start at 0:

                int value[4];
                for (i=0; i<4; i++){
                  value[i] = debouncer[i].read();
                }
                
                Sergio RiusS skywatchS 2 Replies Last reply
                0
                • mfalkviddM mfalkvidd

                  @skywatch arrays indexes in c/c++ always start at 0.
                  int myarray[5] would have positions 0 thorugh 4. Position 5 would be outside the array. In the code above, position 0 is never used.

                  So either make the array 1 element larger than actually needed (with position 0 unused), or let i start at 0:

                  int value[4];
                  for (i=0; i<4; i++){
                    value[i] = debouncer[i].read();
                  }
                  
                  Sergio RiusS Offline
                  Sergio RiusS Offline
                  Sergio Rius
                  wrote on last edited by Sergio Rius
                  #8

                  @mfalkvidd said in Dynamic change of variable name:

                  int myarray[5] would have positions 0 thorugh 4. Position 5 would be outside the array. In the code above, position 0 is never used.

                  So either make the array 1 element larger than actually needed (with position 0 unused), or let i start at 0:

                  In fact, I interpreted it more like @skywatch
                  Notice the <=

                   int value[5];
                   for (i=1; i<=5; i++){
                     value[i] = debouncer[i].read();
                   }
                  

                  I just made something like this for indexing sensors in a node, where idx 0 was the node itself, and thus already filled before the loop.

                  YveauxY 1 Reply Last reply
                  0
                  • Sergio RiusS Sergio Rius

                    @mfalkvidd said in Dynamic change of variable name:

                    int myarray[5] would have positions 0 thorugh 4. Position 5 would be outside the array. In the code above, position 0 is never used.

                    So either make the array 1 element larger than actually needed (with position 0 unused), or let i start at 0:

                    In fact, I interpreted it more like @skywatch
                    Notice the <=

                     int value[5];
                     for (i=1; i<=5; i++){
                       value[i] = debouncer[i].read();
                     }
                    

                    I just made something like this for indexing sensors in a node, where idx 0 was the node itself, and thus already filled before the loop.

                    YveauxY Offline
                    YveauxY Offline
                    Yveaux
                    Mod
                    wrote on last edited by
                    #9

                    @sergio-rius said in Dynamic change of variable name:

                    Notice the <=

                    That will cause a buffer overrun at the end again...

                    http://yveaux.blogspot.nl

                    skywatchS Sergio RiusS 2 Replies Last reply
                    2
                    • YveauxY Yveaux

                      @sergio-rius said in Dynamic change of variable name:

                      Notice the <=

                      That will cause a buffer overrun at the end again...

                      skywatchS Offline
                      skywatchS Offline
                      skywatch
                      wrote on last edited by
                      #10

                      @yveaux Can you please explain why as I want to learn why it won't run the code the way I expected it to! -

                      1 Reply Last reply
                      0
                      • mfalkviddM mfalkvidd

                        @skywatch arrays indexes in c/c++ always start at 0.
                        int myarray[5] would have positions 0 thorugh 4. Position 5 would be outside the array. In the code above, position 0 is never used.

                        So either make the array 1 element larger than actually needed (with position 0 unused), or let i start at 0:

                        int value[4];
                        for (i=0; i<4; i++){
                          value[i] = debouncer[i].read();
                        }
                        
                        skywatchS Offline
                        skywatchS Offline
                        skywatch
                        wrote on last edited by skywatch
                        #11

                        @mfalkvidd That won't get '0 through 4' as it will never produce i=4 in this case. I would expect it to need to be

                        int value[4];
                        for (i=0; i<=4; i++){
                          value[i] = debouncer[i].read();
                        }
                        

                        in order to get 0 through 4 (note the extra '=' in line 2 above to make this work. Or am I still misunderstanding something? ???

                        1 Reply Last reply
                        0
                        • YveauxY Yveaux

                          @sergio-rius said in Dynamic change of variable name:

                          Notice the <=

                          That will cause a buffer overrun at the end again...

                          Sergio RiusS Offline
                          Sergio RiusS Offline
                          Sergio Rius
                          wrote on last edited by
                          #12

                          It's as easy as trying it.

                          @yveaux said in Dynamic change of variable name:

                          That will cause a buffer overrun at the end again...

                          Really? I can't see why a loop trough 1, 2, 3, 4 could overflow a 5 elements array.

                          In my code, I manually add 0 (the device itself, for vcc) before entering the loop. So in this case, still 5 elements.

                          badmannenB 1 Reply Last reply
                          0
                          • Sergio RiusS Sergio Rius

                            It's as easy as trying it.

                            @yveaux said in Dynamic change of variable name:

                            That will cause a buffer overrun at the end again...

                            Really? I can't see why a loop trough 1, 2, 3, 4 could overflow a 5 elements array.

                            In my code, I manually add 0 (the device itself, for vcc) before entering the loop. So in this case, still 5 elements.

                            badmannenB Offline
                            badmannenB Offline
                            badmannen
                            wrote on last edited by
                            #13

                            @sergio-rius
                            the loop will run even at "5".
                            that is the problem. if you write "i<5" , then it would be ok

                            rPi 3 - UNO R3 - Mini - Nano - custom

                            1 Reply Last reply
                            0
                            • Sergio RiusS Offline
                              Sergio RiusS Offline
                              Sergio Rius
                              wrote on last edited by
                              #14

                              @badmannen @Yveaux You're absolutely right. I was lazy, only changed a symbol and gave a bad advice. My response should be changed to <=4.

                              Still I don't understand what the original question was.

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              29

                              Online

                              11.7k

                              Users

                              11.2k

                              Topics

                              113.1k

                              Posts


                              Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • MySensors
                              • OpenHardware.io
                              • Categories
                              • Recent
                              • Tags
                              • Popular