Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Pointers and arrays question.

  1. Feb 3, 2008 #1
    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
    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

    choose a number 0-2
    because you choose that number ill give you : $30



    ***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 :

  2. jcsd
  3. Feb 3, 2008 #2
    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];
  4. Feb 3, 2008 #3
    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.
  5. Feb 4, 2008 #4
    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" [Broken]
    Last edited by a moderator: May 3, 2017
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook