Sorry, but char* ay declares 2D array of pointers to char.
Probably, coveredinflies wants to pass an array as a function argument so right example is most likely
void foo(char ay );
But it's not the same as
void foo(char **ay);
A pointer to an array is a funny thing in C and C++. Array name is implicitly converted in a pointer in all contexts except argument of sizeof operator. So no need in pointers to arrays.
But we can't pass 2D array declared as a[...][...] in the second foo because of its argument type is a pointer to a pointer to char, but not an implicit pointer to 2D array with 255 columns...
It's impossible to declare 2D array which can be passed as type** if a declarator does not know "how to define a pointer to a 2D array". He/she must declare an array of pointers then fill the array with proper pointers to 1D arrays and so on... It's impossible...
For Each ctrl As Control In Me.Controls("pnlMainPanel").Controls
If ctrl.GetType Is GetType(System.Windows.Forms.Panel) Then
For Each subCtrl As Control In ctrl.Controls
If subCtrl.GetType Is GetType(System.Windows.Forms.TextBox) Then
If subCtrl.GetType Is ...