c++ - error: cannot convert 'unsigned char*' to 'const int*' -
i'm writing function accept both unsigned char* , int*:
int foo(const int * a)
however when pass unsigned char * foo(), has compiling error. thought unsigned char automatically casted int? ( smaller range variable casted larger one). work array pointer also?
sample code:
#include <iostream> using namespace std; int average(const int * array, int size) { int sum = 0; (int = 0; <size; i++) sum+=*(array+i); return sum/size; } int main() { unsigned char array[5] = {0,1,2,3,4}; std::cout << average(array, 5); return 0; }
what best way write function accepts both unsigned char* , int*?
i thought unsigned char automatically casted int?
an unsigned char
automatically cast int
unsigned char*
not automatically cast int*
.
unsigned char c = 'a'; unsigned char* cp = &a; int = c; // allowed int* ip = cp; // not allowed
if allowed, do:
*ip = int_max;
but there isn't enough space @ &c
hold number. end accessing unauthorized memory, lead undefined behavior.
Comments
Post a Comment