2012-06-22 2 views
-5

Имеет ли эта функция то же поведение, что memset?поведение memset

inline void SetZeroArray(void *vArray[], unsigned int uArraySize) 
{ 
     for(unsigned i=0; i<=uArraySize; i++) 
        vArray[i] = NULL; 
} 

int main(int argc, char *argv[]) 
{ 

     unsigned int uLevels[500]; 
     SetZeroArray((void**)uLevels, 500); 

     unsigned int ulRLevels[500]; 
     memset(&ulRLevels, 0, sizeof(ulRLevels)); 


    system("pause>nul"); 
    return EXIT_SUCCESS; 
} 
+1

Какова была бы цель этой функции, когда 'memset' уже доступен? – Jon

+1

Ну, для одного, он принимает другой набор аргументов, так что нет. –

+0

Я полагаю, что downvotes - это потому, что это обычно не полезно. –

ответ

3

НЕТ, ваша функция не ведет себя так же, как memset. Ваша функция устанавливает указатель на NULL, а memset устанавливает значения данных в значение .

Различные вещи в целом.

+0

Специально, так как для элемента _bit-pattern_ для нулевого указателя стандартом не требуется все _0s_. –

+0

также SetZeroArray, скорее всего, приведет к неопределенному поведению и сделает это в примере программы. – bames53

+0

'memset' устанавливает значения независимо от второго параметра. –