Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Re: How is memory allocated

Thread Tools

Re: How is memory allocated

Chris Dollin
Posts: n/a
Samuel Thomas wrote:

> #include <stdio.h>
> #include <conio.h>

Non-standard header. You probably don't need this.

> void printnamefirst(char[]);
> void printnamesec(char[]);
> void main()

`main` is required to return `int`.

> {
> clrscr();

Non-standard function. You almost certainly don't need this [1].

> printnamefirst(name);
> }

Undeclared variable `name`. This is beginning to look like homework ...

> void printnamefirst(char nm[])

`nm` is not a helpful name.

> {
> char nam[20] ="Samuej Thomas";
> printnamesec(nam);
> printf("%s \n",nam);

So, what's the point of `nm`?

> }
> void printnamesec(char ns[])
> {
> printf("%s \n",ns);
> ns[5]='l';
> }
> 1.Is it safe to use the variables that are allocated in one function,
> in another function as I have done by printing a string in the
> printnamesec, but which has been declared in printnamefirst function?

It's not safe, because you can't do it. You're not using the variables;
you're using the values. BUT, since an array is almost always converted
into a pointer to its first element, you can't use a reference to an
array [variable] once the block that declares that variable has been
finished with.

> 2.Is it possible to make 'pass by value' work with character strings
> so that they dont get changed? Do they always get passed as reference
> values when passed across functions?

C does not have pass by reference at all. What it does have is that arrays
will usually decay into pointers to their first element. The effect is
similar BUT thinking of it as pass-by-reference will catch you out sometime,

> Does the value of the nam
> variable declared in printnamefirst get modified because of the 'pass
> by reference' mechanism?

No; it's because the reference to `nam` as a function argument got
converted into a pointer. This happens just about *anywhere*; it's
nothing to do with argument-passing.

[1] Some people regard unnecessary screen-clearing as a Serious Sin.
I don't treat it so lightly.

Chris "electric hedgehog" Dollin
C FAQs at:
C welcome:
Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
How to check memory size allocated to JVM? Laura Heinzmann Java 1 02-16-2005 04:37 AM
Dynamically Allocated Memory vs. Statically allocated Memory C++ 5 12-09-2004 01:44 AM
How do I know if memory is already allocated? Kjell Arne Johansen C++ 8 09-02-2003 06:12 AM
Duplicate memory allocated by IndexedTriangleArray Duncan Java 0 07-21-2003 07:25 PM