C Pointer Help ....
RIck bowers
rwbowers at gmail.com
Wed Sep 23 06:44:20 PDT 2009
Just pass Buffer, not &Buffer ... It's already a pointer.
~Rick
Sent from my iPhone
On Sep 23, 2009, at 9:42, Ben Duncan <bend at linux4ms.net> wrote:
> Ok for the PAST few days, i have been refreshing myself back on C.
>
> I was parsing thru a program that extends Python and got a compile
> error on
> Character Buffer pointers. I fieed the error than pondered about it
> for a while,
> and have become totally confused (O.F. syndrome ).
>
> Ok, here is my Questions, I have a pointer to a char buffer defined as
> char *Buffer ;
>
> myfunction ( &Buffer ) ;
>
> I want to pass it to a function change what it points to:
>
> myfunction( Char *Buffer ) { ....
>
> But C compiler complains :
>
> warning: passing argument 1 of 'testpassptr' from incompatible
> pointer type
>
> The goal is to have the function MODIFY what char *Buffer points to.
>
> Can anyone tell me what I am doing wrong or missing ?
>
> Thanks ...
>
> ++++++++++++++ Sample Program ++++++++++++++++++++++++
>
> /*
> **********************************************************************
> A Cute Test Program for FUNCTIOn Pointer testing
> NOTE: Compile with
>
> gcc -o testptr testptr.c
>
> **********************************************************************
> */
> #include <unistd.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <stdint.h>
>
> #include <ctype.h>
> #include <string.h>
>
>
> int testpassptr ( char *Buffer ) ;
>
> int main ( int Argc, char **Argv )
> {
>
> int Return_val = 0 ;
> char *Buffer = NULL ;
>
> printf("We are at test point A \n" ) ;
>
> Return_val = testpassptr( &Buffer ) ;
>
> if (Return_val == 0 )
> {
> printf("we have process string: %s \n", Buffer ) ;
> }
> else
> {
> printf("what a FAILURE we are !!! \n " ) ;
> }
>
> free(Buffer) ;
>
> exit ( 0 );
> }
>
>
> int testpassptr (char *Buffer )
> {
>
> char *Buf_ptr ;
>
> if ((Buf_ptr = (char *) malloc(100)) == NULL)
> {
> printf("Memory allocation error! \n");
> return EXIT_FAILURE;
> }
>
> printf("Memory allocated successfully! \n");
>
> memset(Buf_ptr, '\0', 100 ) ;
>
> strcpy(Buf_ptr, "A TEST String" ) ;
> printf("TESTPASSPTR string: %s \n", Buf_ptr ) ;
> Buffer = Buf_ptr ;
>
>
> return 0 ;
> }
>
>
>
> --
> Ben Duncan - Business Network Solutions, Inc. 336 Elton Road
> Jackson MS, 39212
> "Never attribute to malice, that which can be adequately explained
> by stupidity"
> - Hanlon's Razor
> _______________________________________________
> Linux-users mailing list ( Linux-users at linux-sxs.org )
> Unsub/Password/Etc: http://linux-sxs.org/mailman/listinfo/linux-users
>
> Need to chat further on this subject? Check out #linux-users on irc.linux-sxs.org
> !
More information about the Linux-users
mailing list