[ACCEPTED]-Convert a pointer to an array in C++-memory-mapping
You do not need to. You can index a pointer 1 as if it was an array:
char* p = (char*)CreateFileMapping(...);
p[123] = 'x';
...
In C/C++, pointers and arrays are not the 7 same thing.
But in your case, for your purposes 6 they are.
You have a pointer.
You can give 5 it a subscript.
E.g. a char* pointer points 4 to the start of "hello"
pointer[0] is the 3 first character 'h'
pointer[1] is the second 2 character 'e'
So just treat it as you are 1 thinking about an array.
"In C/C++, pointers and arrays are not the 4 same thing." is true, but, the variable 3 name for the array is the same as a pointer 2 const (this is from my old Coriolis C++ Black 1 Book as I recall). To wit:
char carray[5];
char caarray2[5];
char* const cpc = carray; //can change contents pointed to, but not where it points
/*
cpc = carray2; //NO!! compile error
carray = carray2; //NO!! compile error - same issue, different error message
*/
cpc[3] = 'a'; //OK of course, why not.
Hope this helps.
But how's pointer different from array? What's 2 wrong with
char *Array = (char*)CreateFileMapping(...);
You can treat the Array
more or less 1 like you would treat an array from now on.
You can use a C-style cast:
char *p = (char*)CreateFileMapping(...);
p[123] = 'x';
Or the preferred 1 reinterpret cast:
char *p std::reinterpret_cast<char*>(CreateFileMapping(...));
p[123] = 'x';
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.