problem in C++ pointer

swe sd ccwork@hotmail.com
Sun Mar 12 07:52:00 GMT 2000


  First of all, thanks for you kindy answer ...
  I have the last question. I rewrite the program as follow:
     line 1:  #include <iostream>
     line 2:  void main()
     line 3:  { const int size=10;
     line 4:    int A[size];
     line 5:    int *X=NULL, i;
     line 6:    for (i=0;i<size;i++) A[i]=i;
     line 7:    cout<<A[0]<<" "<<&A<<" "<<&A[0]<<endl;
     line 8:    X=A;
     line 9:    cout<<A[0]<<" "<<&A<<" "<<&A[0]<<endl
     line 10:       <<*X<<endl
     line 11:       <<*X+5<<endl
     line 12:       <<*X<<" "<<A[0]<<endl
     line 13:       <<5+X[0]<<endl
     line 14:       <<( X[0]==0 ? "X[0]=0" : "X[0]!=0")<<endl;
     line 15:   cout<<++X[0]<<endl;    //the change here
     line 16: }
    and executing it gives output:
           $./a.out
           0 0x259fd7c 0x259fd7c
           0 0x259fd7c 0x259fd7c
           0
           5
           0 0
           5
           X[0]=0
           1
    Obviously, it gives the correct answer (line 7 = line 9). I
just wonder what is the different between the original code (using
a single "cout", see test.cc attached) and new code (use another
cout to print ++X[0], above).
    Actually, I tried the original program many time on my PC
running Cygnus. To remove external factor, I close all other
program after a re-boot. But the result is still wrong (see last e-mail).
    Then, to test my program is correct or not, I tried it on a
UNIX SVR with gcc compiler. Then the program works properly.
    So, I just conclude there is some wrong with the cygwin, or
not as good as gcc. Thanks.
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.cc
Type: text/x-c
Size: 406 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20000312/8a179fa0/attachment.bin>


More information about the Cygwin mailing list