Novice C question

Ajay Shah ajayshah at almaak.usc.edu
Tue Apr 16 08:28:22 AEST 1991


Consider this fragment of C code (from Numerical Recipes):

1	double *dvector(nl,nh)
2	int nl,nh;
3	{
4	        double *v;
5	
6	        v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double));
7	        if (!v) nrerror("allocation failure in dvector()");
8	        return v-nl;
9	}

It's supposed to be a function which allocates a vector of
doubles.  My interpretation of nl and nh is: they're array
indexes.  If you want to allocate an array going from 5 to 10,
you would say p = dvector(5, 10).

Question: what is happening on line 8?  Why is he not just
returning v (a pointer)?  What is the meaning of subtracting nl
(an int) from v without any casting?

Thanks!

	-ans.

-- 
_______________________________________________________________________________
Ajay Shah, (213)734-3930, ajayshah at usc.edu
                             The more things change, the more they stay insane.
_______________________________________________________________________________



More information about the Comp.lang.c mailing list