# Pointers and arrays question.

1. Feb 3, 2008

### akueddy

Hi guys,

***I just started c programming, ive done some reading last week and i came up with a basic program.Ive got a problem trying to assign an input as an adress to a specified value.Basically i have 3 datas in my array and it will be called by inputting a number which points to the adress.

***Here's the program that i wrote :

#include <stdio.h>

void main()
{

int n;

int Array[3];
Array[0] = 10;
Array[1] = 20;
Array[2] = 30;

int *pArray;

pArray = &Array[n];

printf("choose a number 0-2\n");
scanf("%d", &n);

pArray = &Array[n];

printf("because you choose that number ill give you : $%d\n",*pArray); } ------------------------------------------------------------------------------------- ***Although theres an error message, the program runs just fine... C:\Borland\BCC55\Bin>bcc32 pointers4 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland pointers4.cpp: Warning W8004 pointers4.cpp 16: 'pArray' is assigned a value that is never used in function main() Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland C:\Borland\BCC55\Bin>pointers4 choose a number 0-2 2 because you choose that number ill give you :$30

C:\Borland\BCC55\Bin>

--------------------------------------------------------------------------------------

***here's my question :

1) Can someone explain to me what's the warning all about and how to correct it? i though i have assign a value for 'pArray' according to the user's input.
2) What if i want to have a really large amount of datas stored in my array, lets say 100 datas. Is there any simple way of doing it say :

Array[10,20,30,40,50,60,70...............1000]?

2. Feb 3, 2008

### Inquisitus

1. You're assigning to pArray and then assigning to it again without using the value you first assigned to it. Furthermore, you're using n before it's been initialised, which you should never do.
2. There are two ways of doing this. You could either assign them each individually:
Code (Text):

int array[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };

…or if there are loads, you could use a for loop:
Code (Text):

int array[100];
for (int i = 0; i < 100; i++)
{
array[i] = i = array[(i + 1) * 10];
}

3. Feb 3, 2008

### shwx

Maybe your problem is not exactly the real problem of your program.
The biggest problem of your program exists here:
Code (Text):

scanf("%d", &n);

Because you haven't checked the value of the input.
No one can guarantee the the input value is of type int and in the range of 0~2.
That means if the input value is not 0~2 or not even a int value, there may be some
severe errors occurrence.

4. Feb 4, 2008

### akueddy

1) Inquisitus

Id prefer this one cause my actual array size is going to be about 100 and the values are not predictable although it is increasing.

int array[] = { 13, 21, 35, 41, 51, 63, 74, 81, 99...................1000 };

2) shwx

The program that i want to write is for an ignition system where depending on the speed of the engine, i will assign a suitable time of spark. So ill assume my input is going to be either on or off and depending on the "on time", i can calculate the speed,it will then points to an address which is the time of spark. Its really an ambitious thing to do for a beginner but i decided to do it anyways.

***new question***

Eventually ill need to apply my c code to program a PIC. Im using Wiz-c as my compiler because i find that its quite easy to visualize whats happening when the code is compiled and simulated. I dont know if this is too elaborate, i hope someone can help me :

1) What is the difference between typical c code (standard stuff such as prinf,scanf) and the ones used on a pic (movlw,movwf,trisa,trisb). I was learning C and PIC code separately and i didnt know that it can be combined(see link for further details). Is the ones on the pic is just an extension of c codes needed in order to make the PIC working?

2) Can anyone give me some tips on how to progress from here on? Im quite confuse on how to write a code to calculate the rpm, there are some examples on the web on a DIY CDI but i just dont understand the logic..

code.http://www.sportdevices.com/ignition/ignition.c