﻿# V548\. TYPE X\[\]\[\] is not equivalent to TYPE \*\*X\. Consider inspecting type casting\.

The analyzer detected a potential error related to an explicit type conversion\. An array defined as "type Array\[3\]\[4\]" is cast to type "type \*\*"\. This type conversion is most likely to be meaningless\.

Types "type\[a\]\[b\]" and "type \*\*" are different data structures\. Type\[a\]\[b\] is a single memory area that you can handle as a two\-dimensional array\. Type \*\* is an array of pointers referring to some memory areas\.

Here is an example:

```cpp
void Foo(char **names, size_t count)
{
  for(size_t i=0; i<count; i++)
    printf("%s\n", names[i]);
}

void Foo2()
{
  char names[32][32];
  ...
  Foo((char **)names, 32); //Crash
}
```



This is the correct code:

```cpp
void Foo2()
{
  char names[32][32];
  ...
  char *names_p[32];
  for(size_t i=0; i<32; i++)
    names_p[i] = names[i];
  Foo(names_p, 32); //OK
}
```