Message-ID: <35D5B384.9FDF797B@sprynet.com> Date: Sat, 15 Aug 1998 09:12:52 -0700 From: Ishpeck Organization: Lunaticnologies MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Re: yet more questions about pointers References: <01bdc7e8$c1ff0e20$4ac3b8cd AT scully> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit NNTP-Posting-Host: 192.41.73.95 Lines: 71 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Well, what you're doing, here, is you're saying string1 points to a section of memory, 80 bytes big. Then saying, in that memory, you have the characters f, o, o, b, a, and r. When you say "string2 = string1", you're actually saying, now string2 also points to that same memory. So, if you change your little string of characters to "faabor", then, both string2 and string1 will print "faabor" -- as you discovered. This is because you're changing the actual data inside your memory -- you're not changing a string. All string1 and string2 are are POINTERS to a string IN MEMORY. It is impossible to say: string1="foobar" because then, you're trying to assign a memory pointer a string, and that's not possible -- unless you make a string class and utilize the inline operator... but that's C++. In any case, Strings don't cast to pointers very well. And yes, you should always free your memory. Sometimes, it gets very messy, and forgeting to free memory is a bad thing. I usually put the "free()" command before I type anything else -- so I don't forget. I hope this answers your questions. Have a happy day! Ishpeck Cephaler wrote: > > Ok just concluded several tests concerning pointers, now I have some > questions to verify my results: > > 1) A simple test program: > int main(void) { > char *string1=(char *)malloc(80); > char *string2; > > strcpy(string1,"foobar"); > > string2 = string1; > > strcpy(string2,"raboof"); > > printf("%s\n",string1); > return(0); > } > > This yielded 'raboof' to my delight... Now, have I found a good use for > pointers? Or is this bad bad code? > > 2) Having not initialized string2, a) do I have to free string2 and b) does > that have any effect on string1? (oops didn't free string1) > > 3) concerning strcpy...is there any special reason why I shouldn't just use > string1 = "foobar" ? > > If the answers to these questions are what I think they are my pointer > dilemmas are over... (game still crashes though :( ) > > - Cephaler - > > p.s. thanks! <-- insert in previous messages as well -- ------------------- See Ishpeck's Programming page! Example source, Utils, links, and help on your programs. http://members.xoom.com/ishpeck/