On Friday 07 May 2004 06:42, Henrik W Lund wrote: ....
malloc() is your friend! :-)
--> double *ncost = malloc(sizeof (double) * persons * scens); <--
This ought to do the trick. Just remember to make sure that malloc returns a valid pointer, otherwise you'll have another seg fault.
I'm pretty sure you can adress the pointer like you do with the array there (ncost[persons][0], etc...); if not, you can always do ncost(sizeof(double) * persons + 0), etc...
/* AMENDMENT!!! */ In my haste, I totally forgot my pointer dereferencing. The correct way to reference a pointer as a two dimensional array is, of course, thus:
*(ncost + (sizeof(double) * persons) + 0)) = 0.00;
You've still got it wrong! ncost increments in units of size equal to that which it points so it should be: *(ncost + person*scens + scen) where person is the first index and scen the second. or in the particular instance *(ncost + person*scens + 0) = 0.00;
For easier to read code it would be better to use: double (*ncost)[scens] = malloc( persons * sizeof *ncost );
and dereference as: ncost[person][scen]
or in particular ncost[person][0] = 0.0;
And for the OP it is usual to write constants generated with #define in upper-case. It generally seems to help to make the code easier to follow. In this case: PERSONS instead of persons and SCENS instead of scens
This also make the distinction between PERSONS and person more evident while retaining their implied connection.
Malcolm
Thank you for the rectification. While the code did compile and run fine the way I wrote it, I suppose that's just lucky. I guess stuff like this is the reason why some of my C/C++ programs seg fault on rare occasions. ;-)
I generally handle pointers well, but evidently not perfectlu well. :-D
-Henrik W Lund _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
