还是不理解指针、指针的指针与数组的关系解决方法

还是不理解指针、指针的指针与数组的关系
int* array = (int*)malloc(sizeof(int) * n);

        for(i = 0; i < n; i++)
        {
                array[i] = rand();//数组了??
        }

        return (void**)array;//指针的指针
------解决方案--------------------
1、你把数组定义和运算符[]搞混了。
2、把int*转变成void**并没什么不可以,前者表示这个地址处存放了一个int数据,后者表示这个地址处存放了一个void*数据。
------解决方案--------------------
int* array = (int*)malloc(sizeof(int) * n);
//将int指针指向一个内存区域,紧接着将该区域作为一个一维数组使用。
        for(i = 0; i < n; i++)
        {
                array[i] = rand();//数组了??
        }
return (void**)array;//指针的指针 
最后,将该内存地址用void **的形式返回。

只要返回了地址,用什么形式理论上说是可以的,无论你用 int *,或 void * 或 void **,void*** 来返回,均是返回该地址。
只是接收返回地址的时候要将指针转换回来,否则就出错。

数组,在内存中的表现就是一个连续的内存区域,其首地址,是一个指针。void**常用于绕过编译器的类型检查机制,进行强制类型转换,而上述例子明显是一个不好的C语言习惯使用方式。不使用强制类型转换,可以让程序的易读性更强,编译器能做类型检查,从而程序更不易出错。



------解决方案--------------------
在我的感觉,指针的指针,多半是用在二维数组时用的