C++ C++;按指针传递和按引用传递 #包括 使用名称空间std; 甲级{ 整数*数字[5]; 公众: 无效分配(整数**x){ 对于(int i=0;i

C++ C++;按指针传递和按引用传递 #包括 使用名称空间std; 甲级{ 整数*数字[5]; 公众: 无效分配(整数**x){ 对于(int i=0;i,c++,parameter-passing,pass-by-reference,pass-by-pointer,C++,Parameter Passing,Pass By Reference,Pass By Pointer,使用: 编辑:对于注释“如果长度…不标准…”,您可以使用模板: void assignment(int* (&x)[5]) ... 模板无效分配(int*(&x)[N])。。。 编译器将自动推断N.使用: #include<iostream> using namespace std; class A{ int *numbers[5]; public: void assignment(int ** x){

使用:

编辑:对于注释“如果长度…不标准…”,您可以使用模板:

void assignment(int* (&x)[5]) ...
模板无效分配(int*(&x)[N])。。。
编译器将自动推断N.

使用:

#include<iostream>

using namespace std;

class A{
        int *numbers[5];
        public:
            void assignment(int ** x){
                    for(int i=0;i<5;i++)
                            numbers[i]=x[i]; //not changing just the value of *numbers[i] but the pointer numbers[i]
            }
            void print(){
                    for(int i=0; i<5;i++)
                            cout<< *numbers[i]<<endl;
            }
};

int main(){
    int *x[5];
    for(int i; i<5;i++){
            x[i]= new int(i);
            cout<<*x[i]<<endl;
    }
    cout<<endl;
    A numbers;
    numbers.assignment(x);
    numbers.print();
    return 0;
}
编辑:对于注释“如果长度…不标准…”,您可以使用模板:

void assignment(int* (&x)[5]) ...
模板无效分配(int*(&x)[N])。。。

编译器将自动推断出N.

我对您的问题和公认的答案有点困惑。如果您使用
int*x[10];
,则不能将其用作
赋值()的参数
。这就是您希望实现的目标吗?好吧,这个问题只是出于教育目的,是在我对通过引用传递感到困惑时提出的。对于这个特定的示例,它回答了我的问题,因为整个问题都是关于这段特定的代码,并且它是有效的。确实,您所指的内容需要一些细节g与选择的答案不同。此外,你所说的也是我的问题,后来得到了回答。谢谢。我对你的问题和被接受的答案感到有点困惑。如果你使用
int*x[10];
,你不能将其用作
赋值()的参数
。这就是您希望实现的目标吗?好吧,这个问题只是出于教育目的,是在我对通过引用传递感到困惑时提出的。对于这个特定的示例,它回答了我的问题,因为整个问题都是关于这段特定的代码,并且它是有效的。确实,您所指的内容需要一些细节g与选择的答案不同。此外,你所说的对我来说也是一个问题,后来得到了回答。谢谢。对于这种情况,这不应该是
void赋值(const int*(&x)[5])…
吗?太棒了,谢谢。如果数组的长度不是标准的(在这种情况下是5),人们会怎么做?πάνταῥεῖ: 不,因为值将存储在一个no const
int*[5]
…您可以说
void assignment(int*const(&x)[5])
并生成
x[i]
常量,但是
*number[i]
将是no const。这不应该是
void赋值(const int*(&x)[5])…
对于这个例子?太棒了,谢谢。如果数组的长度不是标准的(在这个例子中是5),我们怎么做呢?πάνταῥεῖ: 不,因为值将存储在一个无常数
int*[5]
…您可以说
void assignment(int*const(&x)[5])
并使
x[i]
常数,但是
*number[i]
将是无常数。