Trouble with double pointers

This is a discussion on Trouble with double pointers within the C Programming forums, part of the General Programming Boards category; In our code we are using double pointers, and when compiling we are receiving error messages from all the double ...

  1. #1
    Registered User
    Join Date
    May 2009
    Posts
    2

    Question Trouble with double pointers

    In our code we are using double pointers, and when compiling we are receiving error messages from all the double pointers that are called through another function acting as an interface, but no problem arises from the pointers straight between the main function and the function in question. What is causing the double pointers to be incorrect when they are called from a function and not from the main? I hope this is understandable.

  2. #2
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    22,303
    Show the smallest and simplest program that demonstrates the error, and also post the error message.
    C + C++ Compiler: MinGW port of GCC
    Version Control System: Bazaar

    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  3. #3
    Registered User
    Join Date
    May 2009
    Posts
    2
    OK, we have a program that uses a doubly linked list. *top points the the first element, *bottom points to the last.
    Certain functions, like the swap function use double pointers as arguments to change where top and bottom point to.
    Code:
    void swap(song_t *a, song_t *b, song_t **top, song_t **bottom)
    ...
    *top=b;
    when calling these functions straight from the main function, we have no problem:
    Code:
    swap(a, b, &top, &bottom)
    the problem is we also have interfaces, functions that call other functions. when the interface calls a function that has these double pointers as arguments, it gives us the error message like "passing arg 3 of 'swap' from incompatible pointer type"
    right now the interface has **top and **bottom as arguments and tries to pass &top and &bottom as arguments to other functions.
    Is there some other way we should be doing this?

  4. #4
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    22,303
    Quote Originally Posted by cat1
    the problem is we also have interfaces, functions that call other functions. when the interface calls a function that has these double pointers as arguments, it gives us the error message like "passing arg 3 of 'swap' from incompatible pointer type"
    right now the interface has **top and **bottom as arguments and tries to pass &top and &bottom as arguments to other functions.
    Then why pass the addresses of top and bottom when you should be passing top and bottom?
    C + C++ Compiler: MinGW port of GCC
    Version Control System: Bazaar

    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  5. #5
    Registered User
    Join Date
    May 2009
    Posts
    4
    This is why you should probably use different variable names. I'm just guessing at your problem but I'm pretty sure its this.

    top and bottom are both single pointers in main. So you pass the address to make them double pointers. Wham, you understand that I know.

    However, inside of your function swap, top and bottom are already double pointers. Therefore you just pass just top and bottom. No addresses, no dereferences, just top and bottom.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Need some help...
    By darkconvoy in forum C Programming
    Replies: 32
    Last Post: 04-29-2008, 04:33 PM
  2. Replies: 8
    Last Post: 04-25-2008, 03:45 PM
  3. Copying 2-d arrays
    By Holtzy in forum C++ Programming
    Replies: 11
    Last Post: 03-14-2008, 04:44 PM
  4. Replies: 12
    Last Post: 10-23-2006, 08:45 AM
  5. Hi, could someone help me with arrays?
    By goodn in forum C Programming
    Replies: 20
    Last Post: 10-18-2001, 10:48 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21