c – 作为函数参数的指针数组

c – 作为函数参数的指针数组,第1张

概述我对C/C++中的数组指针有一个基本的问题. 说我有: Foo* fooPtrArray[4]; 如何将fooPtrArray传递给函数? 我试过了: int getResult(Foo** fooPtrArray){} // failedint getResult(Foo* fooPtrArray[]){} // failed 我该如何处理指针数组? 编辑:我曾经认为错误消息来自传递错误 我对C/C++中的数组和指针有一个基本的问题.

说我有:

Foo* fooPtrArray[4];

如何将fooPtrArray传递给函数?
我试过了:

int getResult(Foo** fooPtrArray){}  //  Failedint getResult(Foo* fooPtrArray[]){} // Failed

我该如何处理指针数组?

编辑:我曾经认为错误消息来自传递错误的指针数组,但是从所有响应中,我意识到它是另一回事……(指针赋值)

Error msg:Description Resource Path Location Type incompatible types in assignment of `Foo**' to `Foo*[4]' tryPointers.cpp tryPointers line 21 C/C++ Problem

我不明白为什么它说:Foo * *到Foo * [4].如果作为函数参数彼此互换,为什么在赋值期间,它会给出编译错误?

我尝试用最少的代码复制错误消息,如下所示:

#include <iostream>using namespace std;struct Foo{int ID;};voID getResult(Foo** fooPtrArray){cout << "I am in getResult" << endl;Foo* fooPtrArray1[4];fooPtrArray1 = fooPtrArray;}int main(){Foo* fooPtrArray[4];getResult(fooPtrArray);}
解决方法 都

int getResult(Foo** fooPtrArray)

int getResult(Foo* fooPtrArray[])

以及

int getResult(Foo* fooPtrArray[4])

将完美地工作(它们都是等价的).

你的问题不清楚是什么问题.什么“失败”?

当传递这样的数组时,通常也有理由传递元素数,因为允许数组类型延迟到指针类型的技巧通常专门用于允许传递不同大小的数组

int getResult(Foo* fooPtrArray[],unsigned n);...Foo* array3[3];Foo* array5[5];getResult(array3,3);getResult(array5,5);

但是如果你总是要传递严格的4个元素的数组,那么使用不同类型的指针作为参数可能是更好的主意

int getResult(Foo* (*fooPtrArray)[4])

在后一种情况下,函数调用将如下所示

Foo* array[4];getResult(&array);

(注意应用于数组对象的&运算符).

最后,由于此问题被标记为C,在后一种情况下,也可以使用引用而不是指针

int getResult(Foo* (&fooPtrArray)[4]);...Foo* array[4];getResult(array);
总结

以上是内存溢出为你收集整理的c – 作为函数参数的指针数组全部内容,希望文章能够帮你解决c – 作为函数参数的指针数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1220232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存