On Sat, Mar 19, 2011 at 13:03, Bo Berglund <bo.bergl...@gmail.com> wrote: > > Now I have found another very strange construct: > > void ForwardModel::SetMixedBoundaryCondition(const int iElec, > const double* SX0, > const double* SY0, > const double* SZ0, > double* SX, > double* SY, > double* SZ) > > Now it seems like the variable type declaration itself is a > pointer.... > > Instead of double *Name it is double* Name. What is the difference? > It is still being used as an array: > SX[n1] = SX0[n1] * (1.0 - w1); > > Does C++ allow any placement of the * operator with the same meaning? > > And what does const double* mean? Pointer to some object but not > allowed to change that object???? > > Having programmed Delphi for 16 years this is hard to wrap ones head > around. :-(
Welcome to the world of Chell ;-) I (unfortunately) have to use it daily. Ok, not let's be helpful. In the situation above, const has similar meaning as the one in Pascal - you have some value which you are not allowed to change. So, your header should be something like: procedure ForwardModel.SetMixedBoundaryCondition(const iElec : Integer; const SX0, SY0, SZ0 : array of double; var SX, SY, SZ : array of double); Hint: if you use trunk version of FPC, I suggest you use constref to ensure SX0, SY0 and SZ0 are passed as pointer. procedure ForwardModel.SetMixedBoundaryCondition(const iElec : Integer; constref SX0, SY0, SZ0 : array of double; var SX, SY, SZ : array of double); As Jeppe suggested, you can also use pointers: procedure ForwardModel.SetMixedBoundaryCondition(const iElec : Integer; const SX0, SY0, SZ0 : pdouble; SX, SY, SZ : pdouble); _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal