delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/06/09/23:00:18

Message-ID: <3941DA42.1DEE7B3E@cam.org>
From: Uriel Weizmann <uw1 AT cam DOT org>
X-Mailer: Mozilla 4.7 [en] (Win98; I)
X-Accept-Language: en
MIME-Version: 1.0
Newsgroups: comp.os.msdos.djgpp
Subject: error flaging I can't reason with..
X-Forwarded: by - (CAM)
Lines: 59
Date: Fri, 09 Jun 2000 23:03:46 -0700
NNTP-Posting-Host: 198.168.100.7
X-Complaints-To: abuse AT videotron DOT net
X-Trace: wagner.videotron.net 960605784 198.168.100.7 (Fri, 09 Jun 2000 22:56:24 EDT)
NNTP-Posting-Date: Fri, 09 Jun 2000 22:56:24 EDT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

The present is a c++ source program containing two lines commented
respectively CASE1 and CASE2.

Until this moment I can't find an explanation why CASE1 does not work.
I thing that POINTR1 and ARRAY1 are exactly the same type variables with
the same data.

The puzzle even grows by the fact that if we eliminate the & from the
parameter ARRAY in the prototype of FILLARRAY (changing ARRAY from
POINTER REFERENCE  to the older style POINTER TO INTEGER,  CASE1  works
fine.

Thank you for your help
Uri.





#include <iostream>
// #include <iomanip>
// #include <stdio.h>

void fillarray (int* &array)
{
for (int i=0; i < 10; i++)
array[i] = (2 * i);
}

int main()
{
int array1[10];
int* pointr1= array1;

 /* at this point array1 and pointr1 are the "same"
    and should be completely interchageable
*/

/*******************************************************************/

// fillarray (array1);   // CASE 1: compiler flags error/*

 fillarray (pointr1);    // CASE 2:  no errors as well as does the job

/********************************************************************/

for (int i=0; i < 10; i++)

cout << "   " <<  (array1[i])<< endl;
return(0);




}




- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019