sorry... was doing a bunch. forgot the int *i.

Thanks,
_|_|_|_|_|  _|        _|_|_|_|            
    _|      _|_|_|    _|          _|_|_|  
    _|      _|    _|  _|_|_|    _|        
    _|      _|    _|  _|        _|        
    _|      _|    _|  _|_|_|_|    _|_|_|  
Visit TDS for quality software and website production
http://tysdomain.com
msn: [EMAIL PROTECTED]
aim: st8amnd2005
skype: st8amnd127
  ----- Original Message ----- 
  From: ~Rick 
  To: [email protected] 
  Sent: Thursday, September 11, 2008 6:18 PM
  Subject: Re: Res: [c-prog] printing the address of a variable using cout


  At Thursday 9/11/2008 18:41, you wrote:

  > Even better:
  >
  >-- ~Rick <[EMAIL PROTECTED]> wrote:
  > >
  > > I am trying to print the address of a variable, not the contents of it.
  > >
  > > Using printf, I would say:
  > >
  > > printf("Allocated %ld bytes at %p\n", bsize+1, fbuf);
  > >
  > > but I want to use the C++ features using cout/cerr. I've tried the
  > > following but get garbage:
  > >
  > > long int bsize = 1023;
  > > char *fbuf;
  > > fbuf = new char[bsize+1];
  > > if (fbuf)
  > > {
  >
  >// Let the compiler work for you:
  > cerr << "Allocated " << (bsize+1) << " bytes at " << 
  > (void*)fbuf << endl;
  >
  > > delete [] fbuf;
  > > }
  > >

  Pedro,

  Thank you. Casting to a void ptr works.

  Tyler,

  > just use &, like:
  > int i=0;
  > cout << &i;

  Sure, this will work, because you are SPECIFYING the address of the INT.

  > if you have a pointer:
  > int i=new int();
  > cout << i << endl;
  > works great.

  This does NOT work. You would need to specify int *i=new int();

  int *i=new int();
  *i = 5;
  cout << *i << endl; // Prints 5 (but you need the indirection)
  cout << i << endl; // Prints 0xde1040
  cout << (void *)i << endl; // Prints 0xde1040

  char * c = new char[5];
  strcpy(c, "test");
  cout << *c << endl; // Prints t
  cout << c << endl; // Prints test
  cout << (void *)c << endl; // Prints 0xde6c80

  char *ch = new char[1];
  *ch = 'A';
  cout << *ch << endl; // Prints A
  cout << ch << endl; // Prints A (followed by GARBAGE)
  cout << (void *)ch << endl; // Prints 0xde3540

  So, it appears the char data type can ONLY be dynamically created as 
  an array of char.

  ~Rick

  [Non-text portions of this message have been removed]



   

  __________ NOD32 3436 (20080911) Information __________

  This message was checked by NOD32 antivirus system.
  http://www.eset.com


[Non-text portions of this message have been removed]

Reply via email to