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