请问该如何理解函数返回值为void**,函数返回时归还值的时候归还void*和void**是一回事吗?

来源:百度知道 编辑:UC知道 时间:2024/07/08 01:31:06
请问改如何理解void** 我对一维指针的数组运用还算了解,但是遇到2维的和返回值就不懂了大家帮我说说,谢谢大家~
请大家帮我看看改如何理解下面的这些内容~

void** 就是一个万能的指针的指针,可以存放任何一个类型的指针变量,跟你举

个例子

void ** Rll(int size)

{
void *p;

p=malloc(size);

return &p; //这个返回值对吗?返回void*和返回void**一回事吗?
}

运用的时候: *(*(int**)(Rll(4)))=54;这个函数可以申请指定大小,任意类型的

对象空间,并只需要传个大小过去就行了.2维指针在VC++的com技术里面用的十分

广泛的.

1.请问归还return &p语句中指针p本身取&后代表的是创建p指针时内存保存p指针变量的地址还是代表malloc(size)分配的地址?

2.(*(int**)(Rll(4))代表什么?

3.*(*(int**)(Rll(4))又代表什么?

4.函数返回时归还值的时候归还void*和void**是一回事吗?有人跟我说返回void*是通用的,既可以代表void**又能代表void***等等,这是对的吗?

1:p的值就是malloc(size)分配的地址。&p是p这个临时变量的地址。p的类型是void *,&p 就是void **
很显然,p这个临时变量生存期仅限于包含它的这条语句结束。

2:Rll(4)是调用函数。设ret = Rll(4), (*(int**)(Rll(4))代表(*(int**)ret)是一个强制类型转换。(int**)ret先把void ** 转成 int **。这样,ret的类型就变成了int **。最外面的*再解引用,也就是*ret。因为ret = &p, , *ret就是*ret = *&p = p,指向空间的指针。类型是int *。

3:**ret就是*p ,p = malloc(size).所以**ret就是分配的那个空间。

4:返回的类型就是void **。与声明的一致。

void *是个万能指针,主要是因为所有的指针都占一个机器字的空间,而且void 指针可以隐式地转化为其他类型的指针,这并不是说,他们就一样了。

这不是什么二维数组,只不过是个指向指针的指针而已。用法也很有问题。返回临时变量,一般是要回避的。

不懂,请原谅啊

c++ “void表示函数无返回值.”何意? 一类函数,调用后并不需要向调用者返回函数值, 这种函数可以定义为“空类型”。其类型说明符为void 在C语言中 如何理解Void 开头的函数 JAVA中return是方法计算结果返回,那么void呢?无返回值?怎么理解? (void **)&lpdd 如何理解? C++里面如何声明const void f(void)函数为C程序中的库函数? 构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void. 编一函数判别某一数是否为素数,若是,返回值为1,否则,返回值为0。在main函数中调用该函数。 C语言中的void exit(int status)函数为void类型,可是,它又要把status返回父进程,这不是自相矛盾吗? c语言中有且仅有一个主函数,该主函数名前的”void”,表示无返回植.无返回植是什么意思.