l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2010 Feb 28 23:29

The following is an archive of a post made to our 'vox mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox] things that really suck about C!
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox] things that really suck about C!

On Sun, Feb 28, 2010 at 6:35 PM, Brian Lavender <brian@brie.com> wrote:
I think if anything, C has been a certain detriment to the field of
computer science!

One calls a function and the arguments are passed by value. Call a
function with an array as an argument, and feel free to modify its

so declaring an array as const prevents this, func(const double * a).  I understand that this also helps the compiler make optimizations it cannot do when you don't use const.  I think you could still modify the contents of the array by first copying the pointer though,

double * b = a;
b[i] = something new.

So there's also the modifier "restrict", which I believe would prevent this, and again helps out the compiler do smart things.  Others can probably confirm/correct this?  Is it good practice to use these modifiers as often as possible/appropriate?
Certainly, C++ added the idea of reference, but I think Pascal
simplifies these concepts much better. Yet, Pascal seems to be relegated
to the status as a legacy language!


#include <stdio.h>

#define CAP 10

void mod_array(int a[])
 a[2] = 5;

void trychange(int a)
 a = 2;

void reallychange(int *a)
 *a = 2;

int main() {
 int b[CAP];
 int c;
 int i;

 printf("Load array and change a value\n");
 for (i=0; i < CAP; i++)
   b[i] = i + 20;


 for (i=0; i < CAP; i++)
   printf("b[%d] has value of %d\n",i,b[i]);

 c = 10;

 printf("c has a value of %d\n",c);

 printf("c has a value of %d after trychange(c)\n",c);


 printf("c has a value of %d after reallychange(&c)\n",c);


Brian Lavender

"There are two ways of constructing a software design. One way is to
make it so simple that there are obviously no deficiencies. And the other
way is to make it so complicated that there are no obvious deficiencies."

Professor C. A. R. Hoare
The 1980 Turing award lecture
vox mailing list

Carl Boettiger
Population Biology, UC Davis
vox mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
O'Reilly and Associates
For numerous book donations.