首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

仍是不理解指针、指针的指针与数组的关系

2013-12-20 
还是不理解指针、指针的指针与数组的关系int* array (int*)malloc(sizeof(int) * n)for(i 0 i n i

还是不理解指针、指针的指针与数组的关系
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语言习惯使用方式。不使用强制类型转换,可以让程序的易读性更强,编译器能做类型检查,从而程序更不易出错。



[解决办法]
在我的感觉,指针的指针,多半是用在二维数组时用的

热点排行