Go Down

Topic: pointer array? (Read 595 times) previous topic - next topic

xl97

Hi gang-

I have a question on using arrays.

normal usage:

byte buttons[] = {5, 6, 3, 9};

can it be done like this instead:

const int safetyPin =  5;
const int normalPin = 6;
const int autoPin =  3;
const int reloadPin =  9;

byte buttons[] = {safetyPin, normalPIn, autoPin, reloadPin};


I guess an arrays of variables?  or references to pin(s)?
this way I can also refer to them by pin name else where..etc..

Thanks

pYro_65

#1
Aug 01, 2012, 04:15 am Last Edit: Aug 01, 2012, 04:30 am by pYro_65 Reason: 1
Yes

Code: [Select]
int *i_Array[] = { &safetyPin, &normalPIn, &autoPin, &reloadPin};

notice the int pointer type, not a byte, declare the constants as bytes to use byte*
EDIT: this will use more ram than your first method.

Nick Gammon


can it be done like this instead:

Code: [Select]
const int safetyPin =  5;
const int normalPin = 6;
const int autoPin =  3;
const int reloadPin =  9;

byte buttons[] = {safetyPin, normalPIn, autoPin, reloadPin};




Try it and see? Apart from the typo on normalPIn, that compiles and should work.
http://www.gammon.com.au/electronics

Nick Gammon

Even this, since you are using constants:

Code: [Select]
const byte buttons[] = {safetyPin, normalPin, autoPin, reloadPin};
http://www.gammon.com.au/electronics

Delta_G

But the way you and Nick are doing it isn't a pointer.  You're just setting one variable (in the array) equal to another (not in the array).  There aren't really any pointers involved here.

The code Pyro posted uses pointers and would involve some other changes in your code to dereference those.

Nick Gammon

The OP did not say anything about pointers.
http://www.gammon.com.au/electronics

Nick Gammon

Ah, except the thread title of course.

My response was to the actual post, I ignored the thread title.
http://www.gammon.com.au/electronics

GoForSmoke


Hi gang-

I have a question on using arrays.

normal usage:

byte buttons[] = {5, 6, 3, 9};

can it be done like this instead:

const int safetyPin =  5;
const int normalPin = 6;
const int autoPin =  3;
const int reloadPin =  9;

byte buttons[] = {safetyPin, normalPIn, autoPin, reloadPin};


I guess an arrays of variables?  or references to pin(s)?
this way I can also refer to them by pin name else where..etc..

Thanks


Learn about enumerators (enum), they can also help you keep your code straighter.
I find it harder to express logic in English than in Code.
Sometimes an example says more than many times as many words.

xl97

thanks guys..

whre can I learn about:  (enum)?

I didnt see it listed here:  http://arduino.cc/en/Reference/HomePage

Am I allowed to use any "C" code or something?

I found this:
http://arduino.cc/playground/Code/Enum

but how to use it and why didnt really click yet.. =(

Delta_G

Google up.any good C++ tutorial.  Enum is a pretty basic piece.  Shouldn't be hard to find a good explanation. 

pYro_65

Your intention could be expressed using enums something like this:

Code: [Select]
enum MY_PIN_SET{
  safetyPin =  5,
  normalPin = 6,
  autoPin =  3,
  reloadPin =  9,
};

const byte buttons[] = {safetyPin, normalPin, autoPin, reloadPin};

Go Up