为什么我的代码打印地址而不是数组内容?

时间:2015-07-20 19:06:08

标签: c++

我是C ++的新手,需要帮助。我想打印“C”的值,但它会继续打印它的地址。这是我的代码:

#include <iostream>
using namespace std;



int* test (int a[5], int b[5]) {
    int *c = new int[5];
    for (int i = 0; i < 5; i++) c[i] = a[i]+b[i];
    return c;
}


int main() {
    int A[5] = {22, 33, 44, 55, 66};
    int B[5] = {22, 33, 44, 55, 66};
    int* C[10] = {test(A,B)};

    for (int i = 0; i < 10; i++) cout<< &C[i] <<endl;

    return 0;
}

谢谢它的推进。

3 个答案:

答案 0 :(得分:2)

首先int* C[10] = {test(A,B)};应为int * C = test(A,B);,因为您在函数中创建数组并返回指向它的指针。其次,您应在致电delete [] C时在主管末端拨打new[],每次拨打new[]时,都应致电delete[]。最后,您使用cout<< &C[i] <<endl;中的运算符地址(&amp;),因为它的名称将为您提供C[i]的地址,而不是其值。

答案 1 :(得分:1)

摆脱此行的&

for (int i = 0; i < 10; i++) cout<< &C[i] <<endl;

所以它只是

for (int i = 0; i < 10; i++) cout<< C[i] <<endl;

该上下文中的&运算符字面意思是您想要获取该对象的地址,因此它输出的内容就不足为奇了。

答案 2 :(得分:0)

&安培;给出变量的地址。因此&amp; C [i]给出了数组C的第i个元素的地址。只需打印没有&amp;。