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

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -