thanks again. think I got the idea. appreciate your time ! Ori
--- In [email protected], Jim Dougherty <[EMAIL PROTECTED]> wrote: > > > > [email protected] wrote: > > I worte my answers after the arrowes ==> . . . > > > > --- In [ mailto:c-prog%40yahoogroups.com [EMAIL PROTECTED], Jim Dougherty > > <j_dougherty@> wrote: > >> No, a=b is NOT the same as *a=*b. > >> > >> Here are some examples that may help: > >> > >> int x; // ==>that's okay > >> int y; // ==>that's okay > >> > > > >> int *a; // ==>that's also okay (defining pointers) > >> int *b; // ==>that's also okay (defining pointers) > > > >> x = 123; // ==>that's okay too > >> y = 456; // ==>that's okay too > > > >> a = NULL; // "A points at 0." > > // ==>that's like a = '\0' it's fine by me. > > // "*A is whatever int lies at 0." > > //==>did you mean that - > > //==>*A points to a cell number(i.e. 1024) ? > > I meant exactly what I said. > NULL is defined to be 0. > When you set your pointer A to NULL, A winds up pointing at address 0. > It does not point at 1024 or any other address, it points at address 0. > So *A is whatever INT happens to lie at address 0. > In practice you would never set A to NULL and then use *A because you have idea what data would happen to lie at address 0. > Pointers are often set to NULL as a way to indicate that they have not yet been initialized or set up. If a pointer is NULL, it should not be used to access the data that it is pointing at. > > > >> a = x; // "illegal statement" > > //==> why it's illegal? > > This is illegal because you are trying to assign X (which is an integer) to A (which is a pointer to an integer). This does not make sense, A and X are different data types and the compiler should complain if you try to do this. > > > >> a = &x; // "A points at X. *A is 123 which is the value of X." > > //==>*A is what is INSIDE the cell(i.e. 123) > > //==>&A is the address of the cell(i.e. 1024) > > > >> b = &y; // "B points at Y. *B is 456 which is the value of Y." > > //==>that the same as *B=1024(as cell no.) ? > > I do not understand what you are saying/asking. > > > >> a = b; //==> A now points at B which point at Y > > //"*A is now 456." > > //==>and *A still points to Y ? > > NO. A and B are both pointers. > We are setting A to point at the same thing that B points at. > A now points at Y which is the same thing that B is pointing at. > *A is now 456 and *B is still 456. > > > >> *a = 789; //that's okay by me > > > > ====== > > many thanks !! > >> > >> > >> [ mailto:c-prog%40yahoogroups.com [EMAIL PROTECTED] wrote: > >>> Hello again. > >>> and thanks for all the answers !! > >>> > >>> continuing from my question- > >>> is a=b the same like *a=*b ?? > >>> *a == &a ? and *b==&b or I got it all mixed up? > >>> if a and b were initialized in the begining with NULL(\0), > >>> what was the difference ? > >>> > >>> --- In [ mailto:c-prog%40yahoogroups.com ][ mailto:c-prog% 40yahoogroups.com > > [EMAIL PROTECTED], > > Jim Dougherty > >>> <j_dougherty@> wrote: > >>>> > >>>> [ mailto:c-prog%40yahoogroups.com ][ mailto:c-prog% 40yahoogroups.com > > [EMAIL PROTECTED] wrote: > >>>>> [ mailto:c-prog%40yahoogroups.com ][ mailto:c-prog% > > 40yahoogroups.com > >>> ][ mailto:c-prog%40yahoogroups.com [EMAIL PROTECTED] wrote: > >>>>>> defined - > >>>>>> int *a,*b; > >>>>>> > >>>>>> what's the difference between: > >>>>>> > >>>>>> 1. *a=b; > >>>>> Here, the location pointed to by A (which is an INT) > >>>>> is set to the contents of pointer B (which is a pointer to an > >>> INT). > >>>>> Note: the compiler should give you an error/warning about this. > >>>>> > >>>>>> 2. a=b; > >>>>> Here, the pointer A (which is a pointer to an INT) > >>>>> is set to the contents of the pointer B (which is a pointer to > > an > >>> INT). > >>>> Maybe what you intended but did not specify was: > >>>> > >>>> *a = *b; > >>>> > >>>> Here, the location pointed to by A (which is an INT) > >>>> is set to the contents of the location pointed to by B (which is > > an > >>> INT). > >>> > >>> > >>> > >>> > >>> > >>> > >>> > > > > > > > > > > > > > > >
